Regexp:只允许使用几个单词,每个单词只使用一次

时间:2017-10-20 13:33:14

标签: javascript html regex



var string;
string = 'test';
console.log((/(test)+/g).test(string));//i want true
string = 'another test';
console.log((/(test)+/g).test(string));//i want false
string = 'test test';
console.log((/((\w)+(\w){3,}).*?\1/g).test(string));//this work, but i want chose the words
string = 'test test';
console.log((/((test)+(\w)+).*?\1/g).test(string));//this don't work, i can't chose 'test'




如果有一个不可预知的单词,我想总是返回false。 我有一串单词,如果我在字符串中找到一个不可预知的单词,我想要一个假的,所以我总是看到真的,因为只有控制是否找到了这个单词。 对不起英语,谷歌翻译。

2 个答案:

答案 0 :(得分:1)

从我能提出的问题来看,只有当完整的字符串由你想要的单词组成时,你才需要返回true

此正则表达式/^( ?test ?)+$/应该适合您。

这将强制字符串以单词test开头和结尾,并允许单词之间有空格。

答案 1 :(得分:1)

所以,如果在一个字符串中有一个给定字符串的多次出现,那么你想要匹配,对吗?您可以使用RegExp对象生成动态正则表达式模式:

var search = 'test';
var reg = new RegExp('('+search+').*?\\1','g');

console.log(reg.test('test')); // false
console.log(reg.test('test test')); // true
console.log(reg.test('another test')); // false
console.log(reg.test('test another test')); //true