我有一个正则表达式 '^[A0-Z9]+$' 一直有效,直到它到达带有“特殊”字符(如句点或破折号)的字符串。
列表:
UPPER
lower
UPPER lower
lower UPPER
TEST
test
UPPER2.2-1
UPPER2
给予:
UPPER
TEST
UPPER2
如何让正则表达式也忽略非字母数字字符,以便它也包含 UPPER2.2-1?
我在这里有一个“实时”显示它的链接:http://www.rubular.com/r/ev23M7G1O3
这是用于 MySQL 正则表达式
编辑:我没有指定我想要所有非字母数字字符(包括空格),但在其他人的帮助下,它让我想到了这个:'^[A-Z-0-9[:punct:][: space:]]+$' 这有什么问题吗?
最佳答案
尝试
'^[A-Z0-9.-]+$'
您只需将特殊字符添加到组中,并可选择转义它们。
此外,如果您选择不转义 -
,请注意它应该放在分组表达式的开头或结尾,以避免它可能被解释为分隔范围的机会.
对于您更新的问题,如果您想要所有非空白,请尝试使用一个组,例如:
^[^ ]+$
它将匹配除空格以外的所有内容。
如果你想要的是所有非空白和非小写,你可能会想要使用:
^[^ a-z]+$
此处使用的“技巧”是在组表达式中的开头 [
之后添加插入符号。这表明我们想要匹配的否定。
按照该模式,我们还可以应用这个“技巧”来获取所有但小写字母,如下所示:
^[^a-z]+$
我不太确定你想要上面 3 种中的哪一种,但如果没有别的,这应该是一个很好的例子,说明你可以用字符类做什么。
关于mysql - 正则表达式全部大写并带有特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13501652/