我如何使用正则表达式测试完全匹配。
"car".match(/[ca]+/)
返回true。
如果正则表达式模式不包含“r”,我将如何使上述语句返回false?包含“c”和“a”以外的任何字符的任何字符串都应返回false。
“acacaccc”应该返回true
“acacacxcc”应该返回false
答案 0 :(得分:9)
添加一些锚点:
/^[ca]+$/
答案 1 :(得分:7)
你只需要锚点。
"car".match(/^[ca]+$/)
这将强制整个字符串由“c”或“a”组成,因为“^”和“$”表示字符串的“开始”和“结束”。如果没有它们,只要匹配字符串的任何部分,正则表达式就会成功。
答案 2 :(得分:3)
改变你的逻辑并寻找坏事:
string.match(/[^ca]/)
string.index(/[^ca]/)
如果上述任何一个都是非零的,那么你的字符串就会很糟糕。如果你只是想测试而不关心它匹配的地方那么:
if string.index(/[^ca]/).nil?
# You have a good string
else
# You have a bad string
例如:
>> "car".index(/[^ca]/).nil?
=> false
>> "caaaacaac".index(/[^ca]/).nil?
=> true
答案 3 :(得分:1)
试试这个
"car".match /^(a|c)+$/
答案 4 :(得分:1)
试试这个:
"car".match(/^(?:c|a)$/)