mysql - 正则表达式全部大写并带有特殊字符

标签 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 正则表达式

编辑:我没有指定我想要所有非字母数字字符(包括空格),但在其他人的帮助下,它让我想到了这个:'^[A-Z-0-9[:punct:][: space:]]+$' 这有什么问题吗?

最佳答案

尝试

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

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

此外,如果您选择不转义 -,请注意它应该放在分组表达式的开头或结尾,以避免它可能被解释为分隔范围的机会.


对于您更新的问题,如果您想要所有非空白,请尝试使用一个组,例如:

^[^ ]+$

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

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

^[^ a-z]+$

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

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

^[^a-z]+$

我不太确定你想要上面 3 种中的哪一种,但如果没有别的,这应该是一个很好的例子,说明你可以用字符类做什么。

关于mysql - 正则表达式全部大写并带有特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13501652/

相关文章:

sql - 当我使用像 unique key(element1,element2) 这样的东西时,它内部是如何工作的?

javascript - 如何验证正则表达式本身是否有效?

检查 C 中的空行 - 正则表达式

php - MySQL正则表达式按顺序匹配包含某些字段的多个CSV行

MySQL 选择具有给定 id 最大值的行

php - 无法使用 PDO 的 fetch 或 fetchAll 函数获取任何数据

ON 子句中的 MySQL 未知列不起作用

mysql - 复杂的 MySql 连接 - rails

regex - 如何在包中添加 roxygen @export 所有功能

java - 解析Android getprop