Javascript替换所有不是a-z OR撇号的字符

时间:2015-05-11 23:20:19

标签: javascript regex

我看了一下互联网,但我还没有找到一个可靠的答案。这看起来非常简单。假设我想替换非a-z和NOT和撇号的字符串中的所有字符。例如:

用字符串“jeni的精彩冰淇淋”我想替换所有不是a-z或撇号的字符。我到目前为止所尝试的是:

var term = "jeni's splendid ice cream"
term.toLowerCase().replace(/[^a-z]|[^\']/g, '');

但这似乎不起作用......这对每个人来说都是正确的吗?只需要理智检查,哈哈

3 个答案:

答案 0 :(得分:2)

或者语句(|)属于组内部,但在不必要的情况下。这个正则表达式可以解决这个问题:

/[^a-z']/g

工作示例:



var term = "jeni's splendid ice cream"
alert(term.toLowerCase().replace(/[^a-z']/g, ''));




答案 1 :(得分:1)

问题是你正在寻找任何东西。你的正则表达式大致相当于:

if (character !== 'value1' || character !== 'value2')

因此,任何事情都有效。您需要在正则表达式括号组中包含撇号:

/[^a-z']/g

此外,正如Steve Hynding指出的那样,您实际上从未更改term的值。为了使代码按预期工作,应将其重写为:

var term = "jeni's splendid ice cream"
term = term.toLowerCase().replace(/[^a-z']/g, '');

答案 2 :(得分:0)

或类似的东西:

var term = "jeni's splendid ice cream";
term.replace(new RegExp('[^a-z\']', 'g'), '');