0
我需要检查该字符串只包含指定模式一次。 例如:正则表达式 - 检查字符串只包含一次模式
pattern = abc
qabce - returns true
qabceabcr - returns false
我试图做这件事情:
abc{1}
但如果字符串中包含至少一次的模式,则返回true。
我需要检查该字符串只包含指定模式一次。 例如:正则表达式 - 检查字符串只包含一次模式
pattern = abc
qabce - returns true
qabceabcr - returns false
我试图做这件事情:
abc{1}
但如果字符串中包含至少一次的模式,则返回true。
您可以检查匹配数组的长度,如果它是1
那么它是一个有效的输入;
function isValid(str) { return (str.match(/abc/g) || []).length; }
然后用它作为:
isValid('foobar')
//=> 0 - Bad
isValid('qabce')
//=> 1 - Good
isValid('qabceabcr')
//=> 2 - Bad
如果你想要一个纯粹的正则表达式的解决方案,那么你可以使用这个负前瞻正则表达式:
/\b((?!abc)\w)*abc(?!.*abc)\w*/
((?!abc)\w)*
是基于消极lookahead的匹配0或更多字的字符。它声称,下一个位置没有abc
(?!.*abc)
是否定性预测,断言我们没有另一个abc
在这个词前面。尝试全球g
标志
var multipleTimes = "qabceabcr".match(/abc/g).length > 1
@ user2417883:难道这项工作呢? – anubhava