我在JS const camel = const camel = /((?<=[A-Z])(?=[A-Z][a-z]))/g;中有一个正则表达式
它主要是尝试查找位置,之前是大写字符,之后是大写字符,后面是小写字符。
一些测试用例来验证它的工作:
下面是我发现很难有一个优雅的作品的情况。
'runUnitTESt'.replace(camel, ' ') = 'runUnitTE St'
此正则表达式在Chrome中有效,但在safari中不起作用,因为它不支持后视/前视正则表达式。我花了一些时间试图想出一个好的解决办法,但没有找到。有什么见解吗?
谢谢!
发布于 2021-04-07 04:36:25
在您的模式中,两个断言周围有一个捕获组。您可以做的是将第一个后视断言改为匹配,并保留第二个前视断言。
[A-Z](?=[A-Z][a-z])然后在替换中使用完全匹配,后跟空格$&
const camel = /[A-Z](?=[A-Z][a-z])/g;
console.log('runUnitTESt'.replace(camel, "$& "));
https://stackoverflow.com/questions/66883068
复制相似问题