我怎么能在任何地方做这个?
基本上,我正在尝试匹配各种杂项字符,例如&符号、分号、美元符号等。
/[^a-zA-Z0-9\s\:]*/
[^a-zA-Z\d\s:]
\d - 数字类
\s - 空格
a-zA-Z - 匹配所有字母
- 全部否定 - 所以你得到 - 非数字字符,非空格和非冒号
这应该这样做:
[^a-zA-Z\d\s:]
如果您想将带重音的拉丁字符(例如 à Ñ)视为普通字母(即避免匹配它们),您还需要在您的正则表达式中包含适当的 Unicode 范围(\u00C0-\u00FF),这样看起来像这样:
/[^a-zA-Z\d\s:\u00C0-\u00FF]/g
^ 否定后面的
a-zA-Z 匹配大小写字母
\d 匹配数字
\s 匹配空白(如果您只想匹配空格,请将其替换为空格)
: 匹配冒号
\u00C0-\u00FF 匹配重音拉丁字符的 Unicode 范围。
注意。 Unicode 范围匹配可能不适用于所有正则表达式引擎,但上述内容肯定适用于 Javascript(如 Codepen 上的 this pen 所示)。
NB2。如果您不介意匹配下划线,可以将 a-zA-Z\d
替换为 \w
,它匹配字母、数字和下划线。
尝试这个:
[^a-zA-Z0-9 :]
JavaScript 示例:
"!@#$%* ABC def:123".replace(/[^a-zA-Z0-9 :]/g, ".")
查看在线示例:
[^a-zA-Z0-9 :]
可以替换为 [^\w:]
\w
也包含下划线,因此请注意
没有字母数字、空格或“_”。
var reg = /[^\w\s)]|[_]/g;
如果您的意思是“非字母数字字符”,请尝试使用:
var reg =/[^a-zA-Z0-9]/g //[^abc]
在 JavaScript 中:
/[^\w_]/g
^
否定,即选择以下集合中的任何非
\w
任何单词字符(即任何字母数字字符,加上下划线)
_
否定下划线,因为它被视为“单词”字符
使用示例 - const nonAlphaNumericChars = /[^\w_]/g;
[^\w_]
与 [^\w]
相同(因为 _
是一个字字符),它等于 \W
。
根据 RegexBuddy 的说法,它不适用于 Chrome 上的 JavaScript。但是这里已经有一个例子。
这其中的主要部分是:
\p{L}
它代表 \p{L}
或 \p{Letter}
来自任何语言的任何类型的字母。`
完整的正则表达式本身: [^\w\d\s:\p{L}]
示例: https://regex101.com/r/K59PrA/2
尝试添加这个:
^[^a-zA-Z\d\s:]*$
这对我有用...... :)
^
和 $
锚将其限制为匹配整行,而 *
量词意味着它也匹配空行。
[^\w\s-]
不包含以下字符的字符集:
字母数字
空白
冒号
\d
和\s
是 Perl 扩展,它们通常不受grep
、sed
、tr
、lex
等旧工具的支持。