Javascript 正则表达式|用冒号匹配单词,但忽略类似时间的模式

Javascript 正则表达式|用冒号匹配单词,但忽略类似时间的模式,javascript,php,regex,Javascript,Php,Regex,为了获得一个特殊的函数来构建更好、更智能的PDO语句,我匹配并提取了以冒号开头的每个单词 PHP-like-Needle:/:\w+/ 但有时我也不得不处理带有冒号分隔数字的字符串。(时间值) 2018-05-21T00:00:00+02:00 00:00:00 00:00 我试图排除它们,但当我试图为此扩展我的正则表达式指针时,从未成功过。因为这个问题,我经常解决这个问题。但现在我想修复并理解如何解决这个问题 这种情况听起来很简单 查找每个以冒号开头的单词 删除冒号前有数字的所有匹配项 因

为了获得一个特殊的函数来构建更好、更智能的PDO语句,我匹配并提取了以冒号开头的每个单词

PHP-like-Needle
/:\w+/

但有时我也不得不处理带有冒号分隔数字的字符串。(时间值)

  • 2018-05-21T00:00:00+02:00
  • 00:00:00
  • 00:00
我试图排除它们,但当我试图为此扩展我的正则表达式指针时,从未成功过。因为这个问题,我经常解决这个问题。但现在我想修复并理解如何解决这个问题

这种情况听起来很简单

  • 查找每个以冒号开头的单词
  • 删除冒号前有数字的所有匹配项
  • 因此,从当前的
    :\w+

    \d+:\d+(?::\d+)?|(:\w+)
    
    :07时的灯光
    :15:0000

    我只想匹配:

    :07:15:0000时亮起


    您不需要使用
    “/:\w+/”
    您可以使用不会捕获时间的
    “/:[a-zA-Z]+/”

    您不需要使用
    “/:\w+/”
    您可以使用不会捕获时间的
    “/:[a-zA-Z]+/”

    如果
    后面的子字符串不能以数字开头,可以使用

    :[A-Za-z_]\w*
    

    这里,

    • -冒号
    • [A-Za-z_]
      -字母或
      (如果第一个字符只能是字母,请删除
    • \w*
      -0+字母、数字或/和
      \u
    备选方案

    您还可以像字符串一样匹配这些时间,并匹配和捕获
    :\w+

    \d+:\d+(?::\d+)?|(:\w+)
    
    看。仅在组1匹配时获取组1值

    在PHP中,您可以使用正则表达式实现所需的功能:


    使用
    (*SKIP)(*F)
    ,您可以在匹配其余替代项的同时匹配和跳过匹配项。

    如果
    后面的子字符串不能以数字开头,您可以使用

    :[A-Za-z_]\w*
    

    这里,

    • -冒号
    • [A-Za-z_]
      -字母或
      (如果第一个字符只能是字母,请删除
    • \w*
      -0+字母、数字或/和
      \u
    备选方案

    您还可以像字符串一样匹配这些时间,并匹配和捕获
    :\w+

    \d+:\d+(?::\d+)?|(:\w+)
    
    看。仅在组1匹配时获取组1值

    在PHP中,您可以使用正则表达式实现所需的功能:


    使用
    (*SKIP)(*F)
    ,您可以在匹配其余选项时匹配并跳过匹配项。

    它是用于PHP还是用于JS,还是同时用于两者?您是提取还是替换?如果第一个字符不能是数字,请尝试
    :[A-Za-z]\w*
    /:[^\d\s]+/
    尝试this@bassxzero这与空格相匹配,是PHP还是JS,还是两者都匹配?您是提取还是替换?如果第一个字符不能是数字,请尝试
    :[A-Za-z]\w*
    /:[^\d\s]+/
    尝试this@bassxzero这与空格匹配。有趣的是,我没能想到像你们(Wiktor,Andreas)建议的那样最简单的解决方案:使用字符范围而不是单词匹配。非常感谢。有趣的是,我没有想到像你们(Wiktor,Andreas)建议的那样最简单的解决方案:使用字符范围而不是单词匹配。非常感谢。有趣的是,我没有想到像你们(Wiktor,Andreas)建议的那样最简单的解决方案:使用字符范围而不是单词匹配。非常感谢。有趣的是,我没有想到像你们(Wiktor,Andreas)建议的那样最简单的解决方案:使用字符范围而不是单词匹配。非常感谢。