RegExp匹配除两个保留字符串外的任何字符串
RegExp to match any string except two reserved strings?
可能是一个简单的,但是我对创建正则表达式的知识有点模糊。
我试图匹配后面跟着逗号和空格的任何字符串,除非它是' hair Hugger'或'Fluid Warmer'
这是我到目前为止写的
var re_comma = new RegExp("'w+[^Bair Hugger|Fluid Warmer]" + ", ", "i");
任何想法?
新答案
关于你的例子,我想说分割字符串并迭代它真的很容易:
function filter(str, delim, test) {
var parts = str.split(delim),
result = [];
for(var i = 0, len = parts.length; i < len; i++) {
if(test(parts[i])) result.push(parts[i]);
}
return result.join(delim);
}
str = filter(str, ', ', function(s) {
s = s.toLowerCase();
return s === 'bair hugger' || s === 'fluid warmer';
});
否则,表达式变成如下所示:
new RegExp("(^|, )(?!(?:Bair Hugger|Fluid Warmer)(?:$|, )).+?(, |$)", "i");
,您必须使用一个回调来替换,以决定是否删除前面的,
或后面的,
:
str = str.replace(re_comma, function(str, pre, tail) {
return pre && tail ? tail : '';// middle of the string, leave one
});
这段代码的意图不太清楚。也许有一个更简单的表达式,但我认为过滤数组仍然是干净的。
旧答案:(不解决手头的问题,但提供有关正则表达式的信息)。
[]
表示字符类,并且只匹配一个您提供的字符。[^Bair Hugger|Fluid Warmer]
与[^Bair Huge|FldWm]
相同。
你可以使用否定的forward:
new RegExp("^(?!(Bair Hugger|Fluid Warmer), ).+?, $", "i");
注意,必须在字符串中使用''
才能产生一个'
。否则,"'w"
变成w
,不再是一个特殊字符序列。您还必须锚定表达式。
更新:正如您提到的,您想要匹配逗号之前的任何字符串,我决定使用.
而不是'w
来匹配任何字符。
我喜欢正则表达式,Felix Kling的答案是正确的:)
但是对于这种简单的匹配,我通常会使用
下面的内容function contains(str, text) {
return str.indexOf(text) >= 0;
}
if(contains(myString, 'random')) {
//myString contains "random"
}
解决方案:
reg =/(?:Bair Hugger|Fluid Warmer),| (.*)/
str='Bair Hugger, lalala'
reg.exec(str)
>> ["Bair Hugger, lalala", " lalala"]
newStr = reg.exec(str)[1]
相关文章:
- 调试器;[错误]194:11:标识符是一个保留字
- 复杂Regex:如何穿't匹配//之后的保留字
- 在nodejs'inspect'表现得像个保留字
- 使用特征检测通过点表示法检查对保留字的支持
- 为什么“;闭合的“;保留字是JS
- 保留字行为
- 命名函数“;删除“..删除是一个保留字
- 自定义 eslint 规则抛出意外的保留字
- 在带有猫鼬的 JSLint 中抑制“预期标识符,而是看到”默认“(保留字)”
- 是否可以在JS中获取保留字(变量,函数,对象名称)的列表
- “parent”不应该用作javascript变量名(保留字)
- 如何在 dialog() 模式弹出窗口中的部分视图之间保留字段数据
- 为什么我的 JavaScript 哈希带有保留字“toString”作为显示 NaN 的键
- JavaScript 中的保留字列表
- self 在 JavaScript 中不是一个保留字 - 所以它是如何在没有在我的脚本中定义的的情况下使用它的
- 字符串的字段验证以及 JavaScript 中的数字
- 值为“错误”的字符串是某种保留字
- 意外使用保留字'让'在严格模式下
- JavaScript 模块 - 语法错误:export.runInThisContext 中的意外保留字
- 当代码包含保留字时,设置代码的CSS