正则表达式验证MySQL中的URL

时间:2012-01-27 12:04:26

标签: mysql regex pattern-matching

我已经尝试了几种正则表达式模式(设计用于PHP,因为我找不到任何用于MySQL)用于URL验证,但它们都没有工作。可能MySQL的语法略有不同。

我也尝试过提出一个,但没有成功。

那么是否有人知道使用MySQL进行URL验证的相当好的正则表达式?

2 个答案:

答案 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}"