如何将此正则表达式转换为 mysql posix
How to convert this regex to mysql posix
如果已经有答案请见谅
作为正则表达式的完全 n00b,我很难为这种情况获得好的正则表达式:
我需要确定一个字符串是否只包含字母,或者来自 MySQL table 字段的字母和数字……例如。只需获取 MET-KL2531910 并获取没有数字的 MET-IHLPOUJ(因此将不包括 MET-KL2531910)。
经过一段时间,想出了这些:
MET-KL2531910
REGEXP '^(?=.*[-a-zA-Z])(?=.*[0-9])[-A-z0-9]+$'
MET-IHLPOUJ
REGEXP '^(?=.*[-A-z])[-A-z]+$'
但是,由于 MySQL 使用 POSIX,因此出现此错误
Got error 'repetition-operator operand invalid' from regexp
任何人都可以将我的正则表达式转换为 POSIX 正则表达式。
For MET-KL2531910
REGEXP '^(?=.*[-a-zA-Z])(?=.*[0-9])[-A-z0-9]+$'
您可以使用
^[-[:alnum:]]*([-[:alpha:]][-[:alnum:]]*[0-9]|[0-9][-[:alnum:]]*[-[:alpha:]])[-[:alnum:]]*$
详情:
^
- 字符串开头
[-[:alnum:]]*
- 0+ 个连字符或字母数字字符
(
- 另一个组:
[-[:alpha:]][-[:alnum:]]*[0-9]
- 一个 hyphen/alpha 个字符,0+ 个 alnum/-
个字符,一个数字
|
- 或
[0-9][-[:alnum:]]*[-[:alpha:]]
- 一个数字,0+ alnum/-
个字符,hyphen/alpha 个字符
)
- 交替组结束
[-[:alnum:]]*
- 0+ 个连字符或字母数字字符
$
- 字符串结尾。
For MET-IHLPOUJ
REGEXP '^(?=.*[-A-z])[-A-z]+$'
在这里,你根本不需要前瞻,因为你只匹配你需要的,使用
^[-[:alpha:]]+$
这里,
^
- 匹配字符串的开头
[-[:alpha:]]+
- 匹配 1 个或多个 -
或字母(=alpha 字符)
$
- 字符串结尾。
如果已经有答案请见谅
作为正则表达式的完全 n00b,我很难为这种情况获得好的正则表达式:
我需要确定一个字符串是否只包含字母,或者来自 MySQL table 字段的字母和数字……例如。只需获取 MET-KL2531910 并获取没有数字的 MET-IHLPOUJ(因此将不包括 MET-KL2531910)。
经过一段时间,想出了这些:
MET-KL2531910
REGEXP '^(?=.*[-a-zA-Z])(?=.*[0-9])[-A-z0-9]+$'
MET-IHLPOUJ
REGEXP '^(?=.*[-A-z])[-A-z]+$'
但是,由于 MySQL 使用 POSIX,因此出现此错误
Got error 'repetition-operator operand invalid' from regexp
任何人都可以将我的正则表达式转换为 POSIX 正则表达式。
For MET-KL2531910
REGEXP '^(?=.*[-a-zA-Z])(?=.*[0-9])[-A-z0-9]+$'
您可以使用
^[-[:alnum:]]*([-[:alpha:]][-[:alnum:]]*[0-9]|[0-9][-[:alnum:]]*[-[:alpha:]])[-[:alnum:]]*$
详情:
^
- 字符串开头[-[:alnum:]]*
- 0+ 个连字符或字母数字字符(
- 另一个组:[-[:alpha:]][-[:alnum:]]*[0-9]
- 一个 hyphen/alpha 个字符,0+ 个 alnum/-
个字符,一个数字|
- 或[0-9][-[:alnum:]]*[-[:alpha:]]
- 一个数字,0+ alnum/-
个字符,hyphen/alpha 个字符
)
- 交替组结束[-[:alnum:]]*
- 0+ 个连字符或字母数字字符$
- 字符串结尾。
For MET-IHLPOUJ
REGEXP '^(?=.*[-A-z])[-A-z]+$'
在这里,你根本不需要前瞻,因为你只匹配你需要的,使用
^[-[:alpha:]]+$
这里,
^
- 匹配字符串的开头[-[:alpha:]]+
- 匹配 1 个或多个-
或字母(=alpha 字符)$
- 字符串结尾。