我需要一个正则表达式,将匹配任何字符,而不是一个字母或数字。一旦找到,我想用一个空白来替换它。
要匹配除字母或数字以外的任何东西,你可以尝试这样做:
[^a-zA-Z0-9]
取而代之的是:
var str = 'dfj,dsf7lfsd .sdklfj'; str = str.replace(/[^A-Za-z0-9]/g, ' ');
你要找的是:
var yourVar = '1324567890abc§$)%'; yourVar = yourVar.replace(/[^a-zA-Z0-9]/g, ' ');
这将用空格替换所有非字母数字字符。
结尾的“ g”代替了所有的出现。
不需要指定 A-Z (小写)和 A-Z (大写) ,您也可以使用区分大小写的选项: /[^a-z0-9]/gi。
/[^a-z0-9]/gi
这个正则表达式匹配任何非字母、数字或下划线(_)字符的内容。
_
\W
例如在 JavaScript 中:
"(,,@,£,() asdf 345345".replace(/\W/g, ' '); // Output: " asdf 345345"
这太晚了,但是由于没有被接受的答案,我想提供一个我认为最简单的答案: D- 匹配所有非数字字符。
var x = "123 235-25%"; x.replace(/\D/g, '');
结果 x: “12323525”
参见 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
你有没有试过 str = str.replace(/\W|_/g,'');它会返回一个字符串没有任何字符,你可以指定如果任何特殊字符后的管道条 |捕捉他们以及。
str = str.replace(/\W|_/g,'');
|
它将返回 str = 1324567890abcJohnDoe
str = 1324567890abcJohnDoe
或者查找数字和字母,并将其替换为空字符串(“”) :
它将返回 str = '§$)% #$@';
str = '§$)% #$@';
只是让别人看看:
someString.replaceAll("([^\\p{L}\\p{N}])", " ");
将删除任何非字母和非数字的 Unicode 字符。
来源
尝试执行 str.place (/[ ^ w ]/) ; 它将替换所有非字母和数字从您的字符串!
编辑1: str.replace(/[^\w]/g, ' ')
str.replace(/[^\w]/g, ' ')
除了字母、数字或者字母之外,你可以尝试以下方法来匹配 é这样的变音符号:
é
[^\wÀ-úÀ-ÿ]
var str = 'dfj,dsf7é@lfsd .sdklfàj1'; str = str.replace(/[^\wÀ-úÀ-ÿ]/g, '_');
灵感来自顶部的职位与支持的变音符
/[A-Z]/ig
/[^A-Z]/ig
/[0-9]/g
/\d+/g
/[^0-9]/g
/\D+/g
/[^A-Z0-9]/ig
还有其他可能的模式