【发布时间】:2016-11-27 11:01:48
【问题描述】:
我只需要检查一次字符串是否包含指定的模式。 例如:
pattern = abc
qabce - returns true
qabceabcr - returns false
我试图做这件事:
abc{1}
但如果字符串至少包含一次模式,则返回 true。
【问题讨论】:
标签: javascript regex
我只需要检查一次字符串是否包含指定的模式。 例如:
pattern = abc
qabce - returns true
qabceabcr - returns false
我试图做这件事:
abc{1}
但如果字符串至少包含一次模式,则返回 true。
【问题讨论】:
标签: javascript regex
尝试全局 g 标志
var multipleTimes = "qabceabcr".match(/abc/g).length > 1
【讨论】:
你可以检查匹配数组的长度,如果是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)* 是基于 0 个或多个单词字符的负前瞻匹配。它断言下一个位置没有abc
(?!.*abc) 是否定的前瞻,它断言我们在单词中没有另一个 abc。【讨论】: