如何在任何地方执行此操作?
基本上,我正在尝试匹配各种杂项字符,例如&、分号、美元符号等。
如何在任何地方执行此操作?
基本上,我正在尝试匹配各种杂项字符,例如&、分号、美元符号等。
[^a-zA-Z\d\s:]
\d
和\s
是Perl扩展,通常不受像grep
、sed
、tr
、lex
等旧工具的支持。 - tripleee这应该可以解决:
[^a-zA-Z\d\s:]
/[^a-zA-Z\d\s:\u00C0-\u00FF]/g
^
反转其后的匹配a-zA-Z
匹配大小写字母\d
匹配数字\s
匹配空白字符(如果您只想匹配空格,请将其替换为一个空格):
匹配冒号\u00C0-\u00FF
匹配带音调的拉丁字符的Unicode范围。注意:Unicode范围匹配可能不适用于所有的正则表达式引擎,但上述内容在JavaScript中肯定是可行的(如在Codepen上的这个demo中所见)。
注2:如果您不关心匹配下划线,可以将a-zA-Z\d
替换为\w
,它会匹配字母、数字和下划线。
试一下这个:
[^a-zA-Z0-9 :]
JavaScript 示例:
"!@#$%* ABC def:123".replace(/[^a-zA-Z0-9 :]/g, ".")
查看在线示例:
[^a-zA-Z0-9 :]
can be replaced with [^\w:]
- Moses Schwartz\w
包括下划线,所以要注意。 - Alter Lagos/[^\w_]/g
^
表示取反,即选择任何不在以下集合中的内容
\w
表示任何单词字符(即任何字母数字字符,加上下划线)
_
取反下划线,因为它被视为“单词”字符const nonAlphaNumericChars = /[^\w_]/g;
[^\w_]
与[^\w]
相同(因为_
也是单词字符),并等同于\W
。 - Wiktor Stribiżew不允许使用字母数字、空格或下划线。
var reg = /[^\w\s)]|[_]/g;
var reg =/[^a-zA-Z0-9]/g //[^abc]
\u0009\u000A\u000B\u000C\u000D\u0020\u0085\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u200B\u200C\u200D\u2028\u2029\u202F\u205F\u2060\u3000\uFEFF
^
来不包括上述字符,并将冒号添加到其中,然后用 [
和 ]
将正则表达式括起来,以指示它匹配“这些字符中的任何一个”:"[^:\u0009\u000A\u000B\u000C\u000D\u0020\u0085\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u200B\u200C\u200D\u2028\u2029\u202F\u205F\u2060\u3000\uFEFF]"
trimws2 <- function(..., whitespace = "[\u0009\u000A\u000B\u000C\u000D\u0020\u0085\u00A0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u200B\u200C\u200D\u2028\u2029\u202F\u205F\u2060\u3000\uFEFF]") {
trimws(..., whitespace = whitespace)
}
microbenchmark::microbenchmark(trimws2(" \t\r\n"), trimws(" \t\r\n"))
#> Unit: microseconds
#> expr min lq mean median uq max neval cld
#> trimws2(" \\t\\r\\n") 29.177 29.875 31.94345 30.4990 31.3895 105.642 100 a
#> trimws(" \\t\\r\\n") 45.811 46.630 48.25076 47.2545 48.2765 116.571 100 b
\p{L}
它表示任何语言的任何字母,即\p{L}
或\p{Letter}
。
完整的正则表达式本身: [^\w\d\s:\p{L}]
尝试添加这个:
^[^a-zA-Z\d\s:]*$
这对我有用... :)
^
和$
锚定它匹配整行,*
量词意味着它也匹配空行。 - tripleee