用于清理字符串值的Javascript正则表达式

时间:2015-05-06 11:40:01

标签: javascript regex

我想用js从字符串中删除无效字符。

我的正则表达式目前如下:

var newString = oldString.replace(/([^a-z0-9 ]+)/gi, '');

即找到除az或0-9以外的任何内容以及与套管无关的空格并替换为空 - 但我还想允许下划线(_),连字符(-)和点({{ 1}})。

我尝试更新我的正则表达式如下所示,但它没有按预期工作 - 在我做了更改后,我发现带括号()的字符串没有被剥离?

.

我错过了一些简单的东西吗?

4 个答案:

答案 0 :(得分:5)

var newString = oldString.replace(/([^a-z0-9 ._-]+)/gi, '');

                                               ^^

-放在最后,因为它在[]之间形成一个范围。现在它形成了._之间的范围。或者你也可以逃脱它。

 var newString = oldString.replace(/([^a-z0-9 ._\-]+)/gi, '');

答案 1 :(得分:0)

你必须逃避点和连字符:

var newString = oldString.replace(/([^a-z0-9 \.\-_]+)/gi, '');

答案 2 :(得分:0)

将文字短划线放在字符类的最后,或者使用反斜杠将其转义。现在,它允许._的ASCII范围。

var newString = oldString.replace(/[^a-z0-9 ._-]+/gi, '');

旁注:你不需要括号,除非你为某些东西存储匹配(如果括号覆盖整个匹配,你也不需要它们,因为{{1} }指整个比赛)。

答案 3 :(得分:0)

使用反斜杠来逃避。 - _

这应该有效

.replace(/([^a-z0-9 \.\_\-]+)/gi, '');

... ALSO 你也可以使用\ w来表示字母数字和不显眼的

[a-zA-Z0-9_] == \w