正则表达式:不是字母或数字的任何字符


113

我正在尝试找出与任何不是字母或数字的字符匹配的正则表达式。因此,诸如(,, @,£,()等的字符...

找到后,我想用空格替换它。

任何建议。

Answers:


165

要匹配字母或数字以外的任何内容,您可以尝试以下操作:

[^a-zA-Z0-9]

并替换为:

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

17
\w是针对Word字符的,并且与[a-zA-Z0-9_](注意下划线被视为单词字符)完全相同。...因此速记为str.replace(/[^\w]/g, ' ')
Joel Mellon 2013年

但它也将包含许多unicode字母!有什么办法可以排除unicode字母?
精英裁缝

1
要包含Unicode字符,您可以使用[^ \ p {L} 0-9]
Dave

@戴夫:截至2018年,您不可能没有
polyfill

有没有办法,而不是用空格代替...用“ \”替换后跟已识别的字符?这样:将这个dfj,dsf7lfsd .sdklfj放入这个dfj \,dsf7lfsd \ .sdklfj吗?
-CrazySpy

39

此正则表达式匹配不是字母,数字或下划线(_)字符的任何内容。

\W

例如在JavaScript中:

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

我相信他正在寻找/(_ | \ W)/ g,以匹配任何不是数字或字母(英语)的东西
肯尼伯

@sbmaxx我想替换除&,(,)以外的所有这些字符。我如何在当前正则表达式中添加此条件。
K Pal

17

您正在寻找:

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

这将所有非字母数字字符替换为一个空格。

最后的“ g”替换所有出现的内容。

除了指定az(小写)和AZ(大写),您还可以使用区分大小写的选项:/[^a-z0-9]/gi


它也会匹配空格吗?我需要保留空间。谢谢。
James Jeffery 2010年

空格字符会匹配,但随后将被空格字符替换,因此实际上它将使它们保持独立(空格将保留空格)。
jimbo 2010年


5

尝试做str.replace(/ [^ \ w] /); 它将替换字符串中的所有非字母和数字!

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


2
一个有效的答案将是str.replace(/[^\w]/g, ' ')。如果不包括/g标志,它将仅替换第一次出现的标志。而且,如果您没有定义替换字符串,这里是一个空格' ',它将被undefined所有地方替换。最后,下划线将不会被替换,因为它们匹配\w。这个答案不是一个完美的选择。
Julien Lirochon

4
  • 仅匹配字母 /[A-Z]/ig
  • 匹配任何非字母 /[^A-Z]/ig
  • 仅匹配号码/[0-9]/g/\d+/g
  • 匹配任何非数字/[^0-9]/g/\D+/g
  • 匹配任何非数字或字母 /[^A-Z0-9]/ig

还有其他可能的模式


3

只供其他人看:

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

将删除所有非字母和非数字Unicode字符。

资源


我不确定这两个否决票来自何处,但是在JavaScript(此问题有关)中没有replaceAll,并且\p{..}属性转义没有得到广泛实现。
Nickolay

2

您是否尝试过str = str.replace(/\W|_/g,'');将返回没有任何字符的字符串,并且可以指定在竖线后是否也有任何特殊字符|来捕获它们。

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

或寻找数字和字母并将其替换为空字符串(“”):

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


1

要将字母,数字或字母以外的其他内容与变音符号进行匹配é,可以尝试以下操作:

[^\wÀ-úÀ-ÿ]

并替换为:

var str = 'dfj,dsf7é@lfsd .sdklfàj1';
str = str.replace(/[^\wÀ-úÀ-ÿ]/g, '_');

受最高职位启发并支持变音符号

资源

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.