我试图匹配一个字符串上的某个单词,并且只有当它不存在时,我才想使用OR |运算符来匹配另一个单词....但是该匹配忽略了...我如何确保行为原理:
const str = 'Soraka is an ambulance 911'
const regex = RegExp('('+'911'+'|'+'soraka'+')','i')
console.log(str.match(regex)[0]) // should get 911 insteadRun Code Online (Sandbox Code Playgroud)
911发生在字符串的末尾,而Soraka发生在字符串的后半部,并且正则表达式引擎逐个字符地进行迭代,因此Soraka即使它位于交替符的右侧,也要首先进行匹配。
一种选择是匹配Soraka或911捕获的先行替代,然后使用正则表达式匹配对象,在两组之间交替以获得不是的一组undefined:
const check = (str) => {
const regex = /^(?=.*(911)|.*(Soraka))/;
const match = str.match(regex);
console.log(match[1] || match[2]);
};
check('Soraka is an ambulance 911');
check('foo 911');
check('foo Soraka');Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |