Javascript正则表达式:匹配任意顺序的2个子字符串
Javascript regular expression : match 2 substrings in any order
在阅读了如何在Javascript中编写regexp之后,我仍然很困惑如何编写这个…
我要匹配包含至少一个两个子字符串的字符串,以任何顺序。
说sub1 = "foo"和sub2 = "bar"
foo =>不匹配
bar =>不匹配
foobar => matches
barfoo => matches
foohellobar => matches
有人能帮我一下吗?
另外,我想排除另一个子字符串。因此,它将像以前一样匹配包含两个子字符串的字符串,但不包含sub3,无论其与其他两个子字符串的顺序如何。
Thanks to lot
您可以使用indexOf
:
str.indexOf(sub1) > -1 && str.indexOf(sub2) > -1
或ES6中的includes
:
str.includes(sub1) && str.includes(sub2)
或者如果你有一个子字符串数组:
[sub1, sub2/*, ...*/].every(sub => str.includes(sub));
可以:
/.*foo.*bar|.*bar.*foo/g
.*
匹配0或多个字符(其中.
匹配任何字符,*
表示0或多个字符)
|
is regex' or operator
从regex101生成的代码:
var re =/.*foo.*bar|.*bar.*foo/g;Var STR = 'foobar';var m;
while ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}
演示话虽如此,最好使用Oriol的答案使用indexOf()
或includes()
。
我不会使用复杂的正则表达式,而只是使用逻辑操作数&&
。
var param = 'foobar';
alert(param.match(/foo/) && param.match(/bar/) && !param.match(/zoo/));
param = 'foobarzoo';
alert(param.match(/foo/) && param.match(/bar/) && !param.match(/zoo/));
相关文章:
- jsf中两个字符串的颜色代码差异
- 可以't在JavaScript中比较两个字符串
- 三元运算符检查多个字符串
- jQuery在两个字符串标识符之间选择HTML
- 为什么脚本标记被分解为两个字符串
- 比较Javascript中的两个字符串时出错
- 数组转换为多个字符串
- 如何检查两个字符串是否具有相同的字符,包括特殊字符
- Javascript正则表达式来比较两个字符串
- 使用Javascript获取两个字符串之间的字符串数组
- 如何比较两个字符串并删除jquery中的元素
- 如何在 jQuery 中将多个字符串放入单个字符串中
- 获取第一个字符串并在 Ajax 中进行比较
- 如何在 javascript 中使用正则表达式在其他两个字符串之间找到一个字符串
- 删除两个字符串正则表达式之间的所有内容
- 正则表达式每行只匹配第一个字符串
- 如何检查url是否包含多个字符串.Javascript/jquery
- 在JS中同时将字符串与2个字符串进行比较
- Javascript Regex匹配两个字符串之间的子字符串,但子字符串可以包含DOT(.)
- 在jQuery或JavaScript中获取两个字符串之间的文本