Javascript 如何匹配以4位数字开头但忽略前面有冒号的字符串
我正在尝试匹配所有以4位数字开头的子字符串,但数字前面有冒号的子字符串除外。Javascript 如何匹配以4位数字开头但忽略前面有冒号的字符串,javascript,regex,Javascript,Regex,我正在尝试匹配所有以4位数字开头的子字符串,但数字前面有冒号的子字符串除外。 到目前为止,我掌握的情况如下: 1547 blabla bla 2458 blablabla bla: 1548 blabla 字符串: 1547 blabla bla 2458 blablabla bla:1548 blabla 8547 blablabla \d{4} .*?(?=\d{4}) REGEX: 1547 blabla bla 2458 blablabla bla:1548 blabl
到目前为止,我掌握的情况如下:
1547 blabla bla
2458 blablabla bla:
1548 blabla
字符串:
1547 blabla bla 2458 blablabla bla:1548 blabla 8547 blablabla
\d{4} .*?(?=\d{4})
REGEX:
1547 blabla bla 2458 blablabla bla:1548 blabla 8547 blablabla
\d{4} .*?(?=\d{4})
其结果如下:
1547 blabla bla
2458 blablabla bla:
1548 blabla
然而,预期的结果是:
1547 blabla bla
2458 blablabla bla:1548 blabla
8547 blablabla
我尝试了以下方法,但没有成功:
(?<!:)\d{4} .*?(?=\d{4})
(?
您可以使用此正则表达式:
\b\d{4}\b.*(?=[^:][\d{4}\b}$)
正则表达式解释
\b
:单词边界
\d{4}
:匹配4位数字
\b
:单词边界
*?
:匹配0个或更多字符(延迟匹配)
(?=[^:][\d{4}\b |$)
:向前看以断言前面有非冒号字符和4位字,或者有行尾位置
或者,您也可以将此正则表达式与嵌套的负查找一起使用:
\b\d{4}\b.*?(?=(?<!:)\d{4}\b|$)
\b\d{4}\b.*(?=(?您可以使用此正则表达式:
\b\d{4}\b.*(?=[^:][\d{4}\b}$)
正则表达式解释
\b
:单词边界
\d{4}
:匹配4位数字
\b
:单词边界
*?
:匹配0个或更多字符(延迟匹配)
(?=[^:][\d{4}\b |$)
:向前看以断言前面有非冒号字符和4位字,或者有行尾位置
或者,您也可以将此正则表达式与嵌套的负查找一起使用:
\b\d{4}\b.*?(?=(?<!:)\d{4}\b|$)
\b\d{4}\b.*(?=)非常有效。谢谢!非常有效。谢谢!