Mih*_*hai 3 javascript regex split
我有一个字符串,我需要根据大写字母拆分,我的代码如下
let s = 'OzievRQ7O37SB5qG3eLB';
var res = s.split(/(?=[A-Z])/)
console.log(res);Run Code Online (Sandbox Code Playgroud)
但是有一个转折,如果大写字母是连续的,我需要正则表达式"吃"直到这个序列结束.在上面的例子中它返回
..R,Q7,O37,S,B5Q,G3E,L,B
结果应该是
RQ7,O37,SB5q,G3E,LB
思考?谢谢.
您需要匹配这些块/[A-Z]+[^A-Z]*|[^A-Z]+/g而不是使用零宽度断言模式进行拆分,因为后者(在您的情况下,它只是正向前搜索正则表达式)将必须检查字符串内的每个位置,并且无法告诉一旦找到环绕模式,正则表达式就跳过一个位置.
s = 'and some text hereOzievRQ7O37SB5qG3eLB';
console.log(s.match(/[A-Z]+[^A-Z]*|[^A-Z]+/g));Run Code Online (Sandbox Code Playgroud)
细节:
[A-Z]+ - 一个或多个大写ASCII字母[^A-Z]*- 零或更多(仅允许匹配大写字母块)字符而不是大写ASCII字母| - 要么[^A-Z]+ - 除大写ASCII字母以外的一个或多个字符(以允许在字符串开头匹配非大写ASCII字母.在g全球的修改会让String#match()返回所有发现的非重叠的匹配.