Javascript 如何匹配以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

我正在尝试匹配所有以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 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.*(?=)非常有效。谢谢!非常有效。谢谢!