是否有表达简洁的方式:
\w but without _
也就是说,“包括了所有字符\ W,除了_”
我问这是因为我在寻找表达域名验证的最简洁的方式。 域名可以包含小写和大写字母,数字标牌期和破折号,但没有下划线。 \ W包括所有上述的,加下划线。 那么,有没有什么办法可以“去除”从\下划线W¯¯通过正则表达式的语法?
编辑:我想咨询一下正则表达式在PHP中使用。
提前致谢!
是否有表达简洁的方式:
\w but without _
也就是说,“包括了所有字符\ W,除了_”
我问这是因为我在寻找表达域名验证的最简洁的方式。 域名可以包含小写和大写字母,数字标牌期和破折号,但没有下划线。 \ W包括所有上述的,加下划线。 那么,有没有什么办法可以“去除”从\下划线W¯¯通过正则表达式的语法?
编辑:我想咨询一下正则表达式在PHP中使用。
提前致谢!
以下字符类(在Perl)
[^\W_]
\W
是相同的[^\w]
你可以使用一个负前瞻 : (?!_)\w
不过,我觉得写[a-zA-Z0-9.-]
更具有可读性。
为了安全起见,通常情况下,我们将使用字符类:
[a-zA-Z0-9.-]
上述匹配英文字母和数字,加上期间的正则表达式“片段” .
和冲-
它甚至应该有最基本的正则表达式的支持工作。
较短的可能会更好,但只有当你确切地知道它代表什么。
我不知道你用的是什么语言。 在许多发动机, \w
等效于[a-zA-Z0-9_]
一些需要“ASCII模式”这一点)。 然而,一些发动机对正则表达式支持Unicode,并且可以延伸\w
匹配Unicode字符。
如果我的理解是正确的\w
手段[A-Za-z0-9_]
期的迹象,短线不包括在内。
信息: http://en.wikipedia.org/wiki/Regular_expression#POSIX_character_classes
所以我想你想要的是[a-zA-Z0-9.-]
一些正则表达式的味道有可能使用负回顾后的语法:
\w(?<!_)
我会[^ _]开始,然后想还有什么角色,我需要拒绝。 如果你要过滤一个键盘输入,这是相当简单枚举所有不想要的字符。
你可以写这样的事情:
\([^\w]|_)\u
如果您使用preg_filter与此字符串\任何字母W(不含_下划线)将被过滤掉。