正则表达式全部大写与特殊字符

时间:2012-11-21 20:33:24

标签: mysql regex

我有一个正则表达式'^ [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 REGEX

编辑:我没有说明我想要所有非字母数字字符(包括空格),但在其他人的帮助下,它引导我:'^ [AZ-0-9 [:punct:] [: space:]] + $'这有什么问题吗?

4 个答案:

答案 0 :(得分:4)

尝试

'^[A-Z0-9.-]+$'

您只需要将特殊字符添加到组中,可以选择转义它们。

此外,如果您选择不转义-,请注意它应放在分组表达式的开头或结尾,以避免将其解释为分隔范围。


对于您更新的问题,如果您想要所有非空格,请尝试使用以下组:

^[^ ]+$

将匹配除空格外的所有内容。

如果你想要的是所有非空白和非小写,你可能会想要使用:

^[^ a-z]+$

此处使用的'技巧'是在组表达式中打开[后添加插入符号。这表明我们想要匹配的否定

按照模式,我们也可以应用这个'技巧'来获取所有小写字母,如下所示:

^[^a-z]+$

我不确定你想要的3个中的哪一个,但如果没有别的,这应该是你可以用角色类做的一个很好的例子。

答案 1 :(得分:3)

我相信你正在寻找(一个?)大写单词匹配,其中几乎是任何东西。

^[^a-z\s]+$

...或者如果你想允许更多带空格的单词,那么可能就是

^[^a-z]+$

答案 2 :(得分:1)

您只需要输入.-。从理论上讲,你不需要逃脱,因为它们在括号内,但我喜欢在必要时提醒自己逃避。

'^[A-Z0-9\.\-]+$'

答案 3 :(得分:0)

尝试正则表达式如下:

   '^[A0-Z0\\.\\-]+$'