正则表达式,除了空格或冒号之外的每个非字母数字字符

Rya*_*ard 118 regex

我似乎无法弄清楚如何在任何地方做这个.有帮助吗?

基本上我试图匹配各种各样的杂项字符,如&符号,分号,美元符号等.

Tud*_*tin 226

[^a-zA-Z\d\s:]
Run Code Online (Sandbox Code Playgroud)
  • \ d - 数字类
  • \ s - 空白
  • a-zA-Z - 匹配所有字母
  • ^ - 否定所有 - 所以你得到 - 非数字字符,非空格和非冒号

  • 可悲的是,这是不正确的.:(尽管如此,这不能排除字母字符(`\ d`是大多数引擎中`\ w`的确切子集).此外,由于`^`位于正则表达式的中间,它不会'执行否定;相反,它是包含克拉.因此,这个字符类检查任何不是数字,不是空格,克拉或冒号的字符.这些字符的组合匹配每个可能的字符. (7认同)
  • 我发现的唯一一件事就是删除é或ã等特殊字符.我更喜欢[^\w\d\s:]. (4认同)
  • Downvoted,因为这不会捕获非拉丁字符,也不会捕获"特殊"拉丁字符. (4认同)

Luk*_*ger 37

这应该做到:[^a-zA-Z\d\s:] 希望它有所 帮助!

  • Downvoted,因为这不会捕获非拉丁字符,也不会捕获"特殊"拉丁字符. (2认同)

Top*_*era 14

试试这个

[^a-zA-Z0-9 :]
Run Code Online (Sandbox Code Playgroud)

JS例子:

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

查看在线示例:

http://jsfiddle.net/vhMy8/

  • 这是很容易向下投票答案,并且还更难以向董事会提供建设性的信息,例如一个人如何再搭上非拉丁字符,也不是"特殊"拉丁字符?正如我算到这里,你已经投下来出于同样的原因3个回答,在我的一个相当细微调整的意见.例如,我在这里找到一个正则表达式,正是这些答案中讨论的内容.我不关心我的应用程序中不会使用的字符集.收益递减规律. (12认同)
  • 被否决,因为这不会捕获非拉丁字符,也不会捕获“特殊”拉丁字符。 (4认同)
  • 标签怎么样? (2认同)
  • 对于美国公民来说,亚伦可能是一个“小调整”,但与……这个星球的其他人高度相关。 (2认同)
  • `[^a-zA-Z0-9 :]` 可以替换为 `[^\w:]` (2认同)

Nic*_*k F 12

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

/[^a-zA-Z\d\s:\u00C0-\u00FF]/g
Run Code Online (Sandbox Code Playgroud)
  • ^ 否定了以下内容
  • a-zA-Z 匹配大写和小写字母
  • \d 匹配数字
  • \s 匹配空格(如果您只想匹配空格,请用空格替换)
  • : 匹配冒号
  • \u00C0-\u00FF 匹配重音拉丁字符的Unicode范围.

NB.Unicode范围匹配可能不适用于所有正则表达式引擎,但上述肯定适用于Javascript(如Codepen上的此笔中所示).

NB2.如果您对匹配下划线不感兴趣,可以替换a-zA-Z\d\w匹配字母,数字和下划线.


Chr*_*row 7

在 JavaScript 中:

/[^\w_]/g

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

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

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

使用示例 -const nonAlphaNumericChars = /[^\w_]/g;

  • `[^\w_]` 与 `[^\w]` 相同(因为 `_` 是单词字符),并且它等于 `\W`。 (5认同)

Vas*_*nyk 5

不含字母数字、空格或“_”。

var reg = /[^\w\s)]|[_]/g;
Run Code Online (Sandbox Code Playgroud)


小智 5

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

var reg =/[^a-zA-Z0-9]/g      //[^abc]
Run Code Online (Sandbox Code Playgroud)