2016-11-27 55 views

回答

2

您可以检查匹配数组的长度,如果它是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*/ 

RegEx Demo

  • ((?!abc)\w)*是基于消极lookahead的匹配0或更多字的字符。它声称,下一个位置没有abc
  • (?!.*abc)是否定性预测,断言我们没有另一个abc在这个词前面。
+0

@ user2417883:难道这项工作呢? – anubhava

2

尝试全球g标志

var multipleTimes = "qabceabcr".match(/abc/g).length > 1 
相关问题