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