正则表达式与值数组匹配

时间:2020-05-27 12:50:44

标签: javascript

目前我有这个:

const illegals = [/Foo/, /Bar/, /FooBar/];
var testTxt = "Foo Fighter";
var isMatch = illegals.some(rx => rx.test(testTxt));

,由于testTxt包含“ Foo”,因此它返回true。但我只想匹配全文(即“ Foo Fighter”),否则返回false。我这是怎么了?

1 个答案:

答案 0 :(得分:4)

就像Vlaz已经发表评论一样,您需要在模式前后添加^ $,以表明您希望匹配整个字符串。

const illegals = [/^Foo$/, /^Bar$/, /^FooBar$/];
var testTxt = "Foo Fighter";
console.log(illegals.some(rx => rx.test(testTxt)))     // false
console.log(illegals.some(rx => rx.test('Bar')))       // true
console.log(illegals.some(rx => rx.test('Bar stool'))) // false
console.log(illegals.some(rx => rx.test('FooBar')))    // true