组合regex,同时匹配两者,而不是两者都匹配
Combining regex, matching both, not either
好的,我想合并两个正则表达式。在下面的例子中,我想提取任何只指定了字母的单词,然后在该列表中,只提取另一个字母的单词。
我在这个论坛上读了几篇文章。
例如:Javascript 中正则表达式的组合
他们说要把这些表达式和|
、exp1|exp2
结合起来。我就是这么做的,但我得到了不该说的话。如何在下面的示例中组合r1
和r2
?
谢谢你的帮助。
//the words in list form.
var a = "frog dog trig srig swig strog prog log smog snog fig pig pug".split(" "),
//doesn't work, can we fix?
r = /^[gdofpr]+$|[r]+/,
//These work.
r1 = /^[gdofpr]+$/,
r2 = /[r]+/,
//save the matches in a list.
badMatch = [],
goodMatch = [];
//loop through a.
for (var i = 0; i < a.length; i++) {
//bad, doesn't get what I want.
if (a[i].match(r)) badMatch[badMatch.length] = a[i];
//works, clunky. Can we combine these?
if (a[i].match(r1) && a[i].match(r2)) goodMatch[goodMatch.length] = a[i];
} //i
alert(JSON.stringify([badMatch, goodMatch])); //just to show what we got.
我得到以下内容。
[
["frog", "dog", "trig", "srig", "strog", "prog"],
["frog", "prog"]]
再次感谢。
要只匹配由g
、d
、o
、f
、p
和r
字符组成的字符串,并且这些字符串还具有r
,请使用
/^[gdofpr]*r[gdofpr]*$/
请参阅regex和JS演示:
var a = "frog dog trig srig swig strog prog log smog snog fig pig pug".split(" ");
var res = a.filter(x => /^[gdofpr]*r[gdofpr]*$/.test(x));
document.body.innerHTML = JSON.stringify(res, 0, 4);
相关文章:
- 组合regex,同时匹配两者,而不是两者都匹配
- 如何更改其内容的 Iframe 高度(两者都来自同一域)
- 重用另一个模板中的 Mustache 模板,如果两者都在一个 html 文件中定义
- 我在表单页面上有一个弹出窗口以及一个隐藏元素,具体取决于用户输入.两者都使用 jquery
- 元素及其父元素指定了 ng-单击,两者都被调用
- 如何从.js文件访问asp标记中的js变量(两者都在同一页上执行)
- 节点-工厂或构造函数,或者两者都没有
- jQuery函数在$(window).resize()或$(document).ready()上执行,而不是两者都执行
- 执行单击或双击.不是两者都有
- 从js调用php函数-两者都在单独的文件中
- 允许Javascript模块(类)与CommonJS、AMD或两者都不使用
- 为什么两者都承诺's然后&catch回调被调用
- 确定属性在JavaScript中是getter还是setter(或两者都有)
- AngularJs或NodeJs或两者都有
- AngularJS和jQuery..两者都用有什么不对?
- Javascript: getElementById vs getElementsById(两者都在不同的页面上工作)
- 谷歌地图标记或地图将显示,但不是两者都显示
- 是否有理由使用array.forEach()而不是for..在ES6中,两者都可以使用
- 我想在第一个选择的基础上填充第二个选择表单.两者都在从sql数据库中检索它们的元素
- jQuery1.9将html附加到页面中,然后是一个脚本,两者都依赖于文档准备