我在php中有以下正则表达式,用于验证youtube视频的URL:
preg_match('/^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"\'>]+)/', $message)
我需要在mysql中实现相同的正则表达式,以便:
$posts = mysql_query("
SELECT *
FROM posts
WHERE message REGEXP '^(?:http(?:s)?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com\/(?:(?:watch)?\?(?:.*&)?v(?:i)?=|(?:embed|v|vi|user)\/))([^\?&\"\'>]+)'
", $connection);
但它不起作用。
1条答案
按热度按时间qoefvg9y1#
你可以用
关键是:
将所有非捕获组替换为捕获组
不要逃跑
/
因为它们不是特殊的regex元字符它更容易使用
[]
以防你不确定如何逃脱要定义单引号,需要在mysql字符串文本中使用双单引号。