检查字符串是否仅包含字母数字,空格,撇号,短划线或点

时间:2014-07-23 15:42:42

标签: mysql sql regex string unicode

我正在尝试选择名称无效的所有客户。

名称中允许的字符为:
    - 所有Unicode字母[a-z] [A-Z]和其他字母,如(á,é,í,ó,ú,ü,ñ等......)
    - 所有数字[0-9]
    - 仅限这些特殊字符(空格,撇号,短划线,点)

这是我到目前为止所得到的:

SELECT c.*
FROM customers c 
WHERE c.name TRIM(c.name) NOT REGEXP '^[[:alpha:]]+$');

这将选择名称中包含任何非字母数字字符的所有客户。我也需要允许空格,撇号,短划线和点。

示例:

    ábc é --> good
    á bcd --> good
    abc  déf --> good
    ab cd éf --> good
    a-1 b4. --> good
    a 123-- --> good
    a 12'34 .-56 --> good

    ábc" é --> bad (has double quotes)
    á [bcd] --> bad (has square brackets)
    ab    déf --> bad (has a tab)
    ab *cd* éf --> bad (has *)
    (a-1 b4.) --> bad (has brackets)

0 个答案:

没有答案