我需要一个正则表达式来匹配任何不是字母或数字的字符。一旦找到,我想用空格替换它。
要匹配除字母或数字以外的任何内容,您可以尝试以下操作:
[^a-zA-Z0-9]
并替换:
var str = 'dfj,dsf7lfsd .sdklfj';
str = str.replace(/[^A-Za-z0-9]/g, ' ');
此正则表达式匹配任何非字母、数字或下划线 (_
) 字符。
\W
例如在 JavaScript 中:
"(,,@,£,() asdf 345345".replace(/\W/g, ' '); // Output: " asdf 345345"
您正在寻找:
var yourVar = '1324567890abc§$)%';
yourVar = yourVar.replace(/[^a-zA-Z0-9]/g, ' ');
这会将所有非字母数字字符替换为空格。
最后的“g”替换所有出现的地方。
除了指定 az(小写)和 AZ(大写),您还可以使用区分大小写的选项:/[^a-z0-9]/gi
。
这太晚了,但是由于没有公认的答案,我想提供我认为最简单的答案: \D - 匹配所有非数字字符。
变量 x = "123 235-25%"; x.replace(/\D/g, '');
结果 x:“12323525”
请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
仅匹配字母 /[AZ]/ig
匹配任何非字母 /[^AZ]/ig
仅匹配数字 /[0-9]/g 或 /\d+/g
匹配任何非数字 /[^0-9]/g 或 /\D+/g
匹配任何非数字或字母 /[^A-Z0-9]/ig
还有其他可能的模式
尝试做 str.replace(/[^\w]/);它将替换字符串中的所有非字母和数字!
编辑 1:str.replace(/[^\w]/g, ' ')
str.replace(/[^\w]/g, ' ')
。如果您不包含 /g
标志,它将仅替换第一次出现。如果你没有定义一个替换字符串,这里是一个空格 ' '
,它将被 undefined
替换。最后,下划线不会被替换,因为它们匹配 \w
。这个答案并不完美。
仅供他人查看:
someString.replaceAll("([^\\p{L}\\p{N}])", " ");
将删除任何非字母和非数字 unicode 字符。
replaceAll
,并且 \p{..}
属性转义没有得到广泛实施。
要将字母、数字或字母以外的任何内容与 é
之类的变音符号匹配,您可以尝试以下操作:
[^\wÀ-úÀ-ÿ]
并替换:
var str = 'dfj,dsf7é@lfsd .sdklfàj1';
str = str.replace(/[^\wÀ-úÀ-ÿ]/g, '_');
受到支持变音符号的顶帖的启发
您是否尝试过 str = str.replace(/\W|_/g,'');
它将返回一个没有任何字符的字符串,并且您可以指定管道栏 |
之后是否有任何特殊字符来捕获它们。
var str = "1324567890abc§$)% John Doe #$@'.replace(/\W|_/g, '');
它将返回 str = 1324567890abcJohnDoe
或查找数字和字母并将它们替换为空字符串(“”):
var str = "1324567890abc§$)% John Doe #$@".replace(/\w|_/g, '');
它将返回 str = '§$)% #$@';
\w
用于 Word 字符,与[a-zA-Z0-9_]
完全相同(请注意,下划线被视为单词字符。)...所以简写为str.replace(/[^\w]/g, ' ')