javascript - 正则表达式 |将单词与冒号匹配,但忽略类似时间的模式

标签 javascript php regex

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

PHP 类似 Needle:/:\w+/

但有时我也必须处理用冒号分隔的数字的字符串。 (时间值)

  • 2018-05-21T00:00:00+02:00
  • 00:00:00
  • 00:00

我试图排除它们,但当我尝试为此扩展我的正则表达式针时从未成功。由于这个问题,我经常解决这个问题。但现在我想修复并了解如何解决这个问题。

情况听起来很简单

  1. 查找以冒号开头的每个单词。
  2. 删除冒号前有数字的所有匹配项。

因此从当前结果来看 :\w+:

:light at 07:15:0000

我只想匹配:

:light at 07:15:0000

最佳答案

如果:之后的那些子字符串不能以数字开头,您可以使用

:[A-Za-z_]\w*

请参阅regex demo .

这里,

  • : - 冒号
  • [A-Za-z_] - 一封信或 _ (如果第一个字符只能是字母,则删除 _)
  • \w* - 0+ 个字母、数字或/和 _

替代方案

您还可以匹配那些类似时间的字符串,并匹配并捕获:\w+ :

\d+:\d+(?::\d+)?|(:\w+)

请参阅regex demo 。仅当组 1 匹配时才获取组 1 值。

在 PHP 中,您可以通过 SKIP-FAIL 实现您所需要的功能。正则表达式:

'~\d+:\d+(?::\d+)?(*SKIP)(*F)|:\w+~'

参见another demo .

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

关于javascript - 正则表达式 |将单词与冒号匹配,但忽略类似时间的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51594153/

相关文章:

javascript - 使用 JavaScript 在 div 上加载 php 页面

javascript - 如何使用jquery计算html表中的行

php - 在 MySQL 中使用 Group BY 获取行

python - 以不同的顺序检索多个捕获组?

Python 正则表达式可选捕获组,具有正向前瞻功能

javascript - 孤立范围内的清晰形式?

javascript - jQuery animate scrolldown to div by <a href""> 从 1 html 到另一个 html 站点?

php - 使用 htaccess 重写 Url 会使搜索引擎发现网站吗?

php - Opencart:无法以编程方式更新订单

Python re.sub() 优化