youtube视频正则表达式

fnatzsnv  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(337)

我在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);

但它不起作用。

qoefvg9y

qoefvg9y1#

你可以用

REGEXP '^(https?://)?(www[.])?(m[.])?(youtu[.]be/|youtube[.]com/((watch)?[?](.*&)?vi?=|(embed|v|vi|user)/))[^?&\"''>]+'

关键是:
将所有非捕获组替换为捕获组
不要逃跑 / 因为它们不是特殊的regex元字符
它更容易使用 [] 以防你不确定如何逃脱
要定义单引号,需要在mysql字符串文本中使用双单引号。

相关问题