仅在字符串开头/结尾匹配正则表达式

3

根据标题,我想在一个字符串上使用.match()函数,只匹配出出现在该字符串开头或结尾的实例(而不是中间任何位置)。

例如,对于单词“test”:

x = "1 TEST 1"
x1 = "TEST 1"
x2 = "1 TEST"
x3 = "TEST"

只有x1、x2和x3应该匹配正则表达式。目前,我有:

.toUpperCase().match(/(TEST)/)

这将匹配“test”的所有实例。我尝试使用^和$修饰符,但它们只会匹配x3。然而,这个可以:

.toUpperCase().match(/(TEST)$/)

只会匹配x2和x3,使用.toUpperCase().match(/^(TEST)/)将只匹配x1和x3。

2个回答

6

只需使用 | 来匹配其中一个。

.toUpperCase().match(/^TEST|TEST$/)

还要注意,你不需要在 TEST 周围加括号。


2
这可能有点取决于您的用例,但您可以跳过.toUpperCase(),并使匹配不区分大小写:.match(/^TEST|TEST$/i) - benschumacher
感谢您的帮助CAustin!@benschumacher提供的关于大小写敏感性的技巧非常好,也要谢谢他。 - Spectre S

0
/^TEST.*|.*TEST$/

这个正则表达式将匹配以 "TEST" 开头或结尾的行。添加 m 来匹配多行。

注意:此正则表达式将返回整个行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接