正则表达式:匹配以“AM”结尾的单词(不区分大小写比较)[重复]

Posted

技术标签:

【中文标题】正则表达式:匹配以“AM”结尾的单词(不区分大小写比较)[重复]【英文标题】:Regex: match word that ends with “AM” (with case insensitive comparison) [duplicate] 【发布时间】:2016-08-29 18:34:06 【问题描述】:

我需要使用正则表达式比较以“AM”结尾的文本。使用不区分大小写的输入,即

上午 上午 上午 上午

所有都应该是有效的场景。我在下面试试

myinput.match(/^\w*am\b$/)

但它在进行区分大小写的比较(即,对于“am”但不适用于 AM、Am、aM)。

JSFiddle

【问题讨论】:

myinput.match(/^\w*am$/i) 【参考方案1】:

您需要在末尾添加 case intensive 标志:

myinput.match(/^\w*am\b$/i)

编辑:根据您的评论

07.15am 的问题是正则表达式的第一部分。如果你想严格,那么你可以尝试:

/^(\w+)(\.\w+)\s?(am)$/i

这将匹配 07.15am07.15Am07.15 AM

如果您想稍微宽松一点,可以将第二组设为可选。

/^(\w+)(\.\w+)?\s?(am)$/i

如果您在字符串之前或之后有任何内容,这也不起作用。我建议删除 ^$ 边界。

/(\w+)(\.\w+)?\s?(am)/i

这应该涵盖大多数情况。

【讨论】:

\b$ 这里和$一样。 如果输入为:07.15am,则无法正常工作

以上是关于正则表达式:匹配以“AM”结尾的单词(不区分大小写比较)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript正则表达式匹配不区分大小写的单词? [复制]

Nginx中的正则如何匹配数字

nginx 正则表达式

如何使用正则表达式匹配不以某些字符开头或结尾的单词?

C ++ 11正则表达式匹配一个不以句点结尾的完整单词?

正则表达式不区分大小写搜索带有变量的整个单词