正则表达式:如何快速\\ W,没有下划线(Regular Expressions: How to E

2019-08-16 23:03发布

是否有表达简洁的方式:

\w but without _

也就是说,“包括了所有字符\ W,除了_”

我问这是因为我在寻找表达域名验证的最简洁的方式。 域名可以包含小写和大写字母,数字标牌期和破折号,但没有下划线。 \ W包括所有上述的,加下划线。 那么,有没有什么办法可以“去除”从\下划线W¯¯通过正则表达式的语法?

编辑:我想咨询一下正则表达式在PHP中使用。

提前致谢!

Answer 1:

以下字符类(在Perl)

[^\W_]

\W是相同的[^\w]



Answer 2:

你可以使用一个负前瞻 : (?!_)\w

不过,我觉得写[a-zA-Z0-9.-]更具有可读性。



Answer 3:

为了安全起见,通常情况下,我们将使用字符类:

[a-zA-Z0-9.-]

上述匹配英文字母和数字,加上期间的正则表达式“片段” . 和冲- 它甚至应该有最基本的正则表达式的支持工作。

较短的可能会更好,但只有当你确切地知道它代表什么。

我不知道你用的是什么语言。 在许多发动机, \w等效于[a-zA-Z0-9_]一些需要“ASCII模式”这一点)。 然而,一些发动机对正则表达式支持Unicode,并且可以延伸\w匹配Unicode字符。



Answer 4:

如果我的理解是正确的\w手段[A-Za-z0-9_]期的迹象,短线不包括在内。

信息: http://en.wikipedia.org/wiki/Regular_expression#POSIX_character_classes

所以我想你想要的是[a-zA-Z0-9.-]



Answer 5:

一些正则表达式的味道有可能使用负回顾后的语法:

\w(?<!_)


Answer 6:

我会[^ _]开始,然后想还有什么角色,我需要拒绝。 如果你要过滤一个键盘输入,这是相当简单枚举所有不想要的字符。



Answer 7:

你可以写这样的事情:

\([^\w]|_)\u

如果您使用preg_filter与此字符串\任何字母W(不含_下划线)将被过滤掉。



文章来源: Regular Expressions: How to Express \\w Without Underscore
标签: php regex url