现在,我知道我可以计算一个字符串是否包含特定的子字符串。使用这个:
if(str.indexOf("substr") > -1){
}
我的子字符串'GRE'我想匹配我的自动完成列表:
GRE:数学
GRE-数学
但我不想匹配:
CONGRES
我特别需要匹配:
NON-WORD-CHAR
{GRE {1}}
还有
NON-WORD-CHAR
在我的案例中,什么应该是完美的正则表达式?
答案 0 :(得分:2)
答案 1 :(得分:2)
MD,如果我理解你的规范,这个简单的正则表达式应该适合你:
\W?GRE(?!\w)(?:\W\w+)?
但如果您能够指定您愿意允许的非单词字符,我会更喜欢[:-]?GRE(?!\w)(?:[:-]\w+)?
之类的内容(请参阅下面的说明)。
这将匹配
GRE
GRE:Math
GRE-Math
但不是CONGRES
理想情况下,我想将\W
(非单词字符)替换为允许字符列表,例如[-:]
为什么?因为\W
会匹配您不想要的非单词字符,例如空格和回车符。那么该列表中的内容供您决定。
这是如何运作的?
\W?
可选地匹配您指定的单个非单词字符。然后我们匹配文字GRE
。然后,前瞻(?!\w)
断言下一个字符不能是单词字符。然后,可选地,我们匹配非单词字符(根据您的规范),后跟任意数量的单词字符。
根据您看到出现的位置,您可以添加边界。
答案 2 :(得分:0)
您可以使用正则表达式:/\bGRE\b/g
if(/\bGRE\b/g.test("string")){
// the string has GRE
}
else{
// it doesn't have GRE
}
\b
表示字边界