2010-06-07 295 views

回答

102

要匹配不是字母以外的任何或号码,你可以试试这个:

[^a-zA-Z0-9] 

并能代替:

var str = 'dfj,dsf7lfsd .sdklfj'; 
str = str.replace(/[^A-Za-z0-9]/g, ' '); 
+11

'\ w'为单词字符并且是完全一样'[A-ZA-Z0-9_]'(即下划线被认为是一个字字符通知)...所以简写为'str.replace(/ [^ \ w]/g,'')' – 2013-08-30 16:41:58

+0

,但它也会包含许多unicode字母!有什么办法可以排除unicode字母吗? – 2017-05-04 12:06:19

+0

要包含unicode字符,可以使用[^ \ p {L} 0-9] – Dave 2017-08-09 21:29:20

13

您正在寻找:

var yourVar = '1324567890abc§$)%'; 
yourVar = yourVar.replace(/[^a-zA-Z0-9]/g, ' '); 

这将用空格替换所有非字母数字字符。

最后的“g”代替所有的事件。

您也可以使用区分大小写选项/[^a-z0-9]/gi来代替指定-Z(小写)和A-Z(大写)。

+0

它是否与空格匹配?我需要保留空间。谢谢。 – 2010-06-07 18:17:26

+0

空格字符会匹配,但会被空格字符替换,所以实际上它会让它们保持单独(空格将保留一个空格)。 – jimbojw 2010-06-07 18:42:03

21

此正则表达式不匹配字母,数字和下划线字符。

 

\W 
 

例如在javascript:

 

"(,,@,£,() asdf 345345".replace(/\W/g, ' '); 
 
+0

我相信他正在寻找/(_ | \ W)/ g,以匹配任何不是数字或字母(英语) – kennebec 2010-06-07 18:44:31

+5

...或/ [\ W _] /也许 – Pointy 2010-06-07 18:51:58

1

你试过str = str.replace(/\W|_/g,'');它会返回一个字符串,没有任何字符,你可以指定任何特殊字符之后管棒|赶上他们。

var str = "1324567890abc§$)% John Doe #[email protected]'.replace(/\W|_/g, '');它将返回str = 1324567890abcJohnDoe

或寻找数字和字母和更换这些部件空字符串( “”):

var str = "1324567890abc§$)% John Doe #[email protected]".replace(/\w|_/g, '');它将返回str = '§$)% #[email protected]';

2

只是给别人看:

someString.replaceAll("([^\\p{L}\\p{N}])", " "); 

将删除任何非字母和非数字的unicode字符。

Source

0

尝试做str。取代(/ [^ \ W] /); 它将取代您的字符串中的所有非字母和数字!

编辑1:str.replace(/[^\w]/g, ' ')

+1

工作答案将是'str。替换(/ [^ \ w]/g,'')'。如果您不包含'/ g'标志,它将仅替换第一个事件。如果你没有定义一个替换字符串,这里有一个空格'''',它会被全部替换为'undefined'。最后,下划线不会被替换,因为它们匹配'\ w'。这个答案并不完美。 – 2017-02-18 17:25:56

相关问题