正则表达式,除空格或冒号外的所有非字母数字字符


131

如何在任何地方做到这一点?

基本上,我试图匹配各种其他字符,例如“&”号,分号,美元符号等。


13
/[^a-zA-Z0-9\s\:]*/
凯利

Answers:


245
[^a-zA-Z\d\s:]
  • \ d-数值类
  • \ s-空格
  • a-zA-Z-匹配所有字母
  • ^-全部取反-这样就得到-非数字字符,非空格和非冒号

这也是我一直在查看的内容:))-我必须推广您的完美答案
Tudor Constantin

6
我发现的唯一一件事是,它删除了é或ã等特殊字符。我希望使用[^ \ w \ d \ s:]。
埃里克·贝莱尔

5
不推荐使用,因为它不会捕获非拉丁字符,也不会捕获“特殊”拉丁字符。
达米安

\d\s为通常不被旧的工具支持像Perl扩展grepsedtrlex,等
tripleee

38

应该这样做:

[^a-zA-Z\d\s:]

1
其余的要么检查空间,要么不检查空格,或者在一个错误的地方取反,以实际取反。
扎卡里·斯科特

\ W卡子也强调-这是一个非字母数字字符
铎Constantin的

啊哈!我将进行修改-我不知道。我希望它对不同的引擎有不同的作用,但也可能给OP一个安全的答案。
路加·斯诺格

2
不推荐使用,因为它不会捕获非拉丁字符,也不会捕获“特殊”拉丁字符。
达米安

16

如果您想将带重音的拉丁字符(例如àÑ)视为普通字母(即也避免匹配它们),则还需要在正则表达式中包括适当的Unicode范围(\ u00C0- \ u00FF),因此看起来像这样:

/[^a-zA-Z\d\s:\u00C0-\u00FF]/g
  • ^ 否定接下来的事情
  • a-zA-Z 匹配大小写字母
  • \d 匹配数字
  • \s 匹配空格(如果您只想匹配空格,请将其替换为空格)
  • : 匹配冒号
  • \u00C0-\u00FF 匹配带重音的拉丁字符的Unicode范围。

nb。Unicode范围匹配可能不适用于所有正则表达式引擎,但以上内容肯定适用于Javascript(如在Codepen上的这支所示)。

nb2。如果您不必担心下划线的匹配,可以将替换a-zA-Z\d\w,以匹配字母,数字和下划线。


这个范围包含了一些字符,不字母(U + 00D7和U + 00F7),并且排除了很多有效的重音字符来自非西方语言,如波兰,捷克,越南等
tripleee

1
为RegEx的每个部分的描述而投票。
morajabi '19

14

试试这个:

[^a-zA-Z0-9 :]

JavaScript示例:

"!@#$%* ABC def:123".replace(/[^a-zA-Z0-9 :]/g, ".")

查看在线示例:

http://jsfiddle.net/vhMy8/


3
不推荐使用,因为它不会捕获非拉丁字符,也不会捕获“特殊”拉丁字符。
达米安

14
否定一个答案很容易,但是向董事会提供建设性信息则更加困难,例如,然后人们如何捕获非拉丁字符或“特殊”拉丁字符?就我的观点而言,出于相同的原因,您已对3个答案投了反对票,我认为这是一个相当小的调整。例如,我在这里找到正则表达式,以确切说明这些答案中讨论的内容。我不在乎不会在我的应用程序中使用的字符集。收益递减规律。

亚伦可能对美国公民来说是“次要的调整”,但与……地球的其余部分息息相关。
Michael K. Borregaard


4

如果您的意思是“非字母数字字符”,请尝试使用此命令:

var reg =/[^a-zA-Z0-9]/g      //[^abc]

1

该正则表达式适用于C#PCREGo等

RegexBuddy所说的,它不适用于Chrome上的JavaScript 。但是这里已经有一个例子了。

其主要部分是:

\p{L}

代表\p{L}\p{Letter}来自任何语言的任何形式的信件。


完整的正则表达式本身: [^\w\d\s:\p{L}]

范例: https //regex101.com/r/K59PrA/2


这是这里唯一以适当方式正确处理Unicode重音字母的答案。可悲的是,并非所有的正则表达式引擎都支持此功能(即使从3.8开始,Python也缺少此功能,即使其正则表达式引擎表面上基于PCRE也是如此)。
三人房

1
我将从答案中删除Python,我以为我已经测试过了,但显然没有。感谢您指出了这一点。
Ste

0

尝试添加以下内容:

^[^a-zA-Z\d\s:]*$

这对我有用... :)


这似乎重复了从2011年开始接受的答案。^$锚将其限制为匹配整行,而*量词表示它也匹配空行。
Tripleee

0

在JavaScript中:

/[^\w_]/g

^否定,即选择以下集合中包含的任何内容

\w 任何单词字符(即任何字母数字字符,再加上下划线)

_ 否定下划线,因为它被认为是“单词”字符

用法示例- const nonAlphaNumericChars = /[^\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.