我已经尝试了几种正则表达式模式(设计用于PHP,因为我找不到任何用于MySQL)用于URL验证,但它们都没有工作。可能MySQL的语法略有不同。
我也尝试过提出一个,但没有成功。
那么是否有人知道使用MySQL进行URL验证的相当好的正则表达式?
答案 0 :(得分:5)
根据11.5.2. Regular Expressions中的文章MySQL's documentation,您可以使用以下语法对正则表达式执行选择
SELECT field FROM table WHERE field REGEX pattern
为了匹配简单的URL,您可以使用
SELECT field FROM table
WHERE field REGEXP "^(https?://|www\\.)[\.A-Za-z0-9\-]+\\.[a-zA-Z]{2,4}"
这将匹配大多数网址,例如
但不是
答案 1 :(得分:1)
虽然KBA发布的答案有效,但逃避有一些不一致。
正确的语法应该是,这种语法可以在MySQL和PHP中使用。
SELECT field FROM table
WHERE field REGEXP "^(https?:\/\/|www\.)[\.A-Za-z0-9\-]+\.[a-zA-Z]{2,4}"
只有“字段”的内容以URL开头时,上述代码才会匹配。如果您想匹配字段包含网址的所有行(例如,被其他文本/内容包围),只需使用:
SELECT field FROM table
WHERE field REGEXP "(https?:\/\/|www\.)[\.A-Za-z0-9\-]+\.[a-zA-Z]{2,4}"