2

YouTube の埋め込み動画をテストするための正規表現をいくつか作成しました。

/^(http:\/\/www\.youtube\.com\/embed\/)[^\/\s\\]+$/

テストしたときに期待どおりに機能しますが、問題は、その正規表現を文字列として関数に渡す必要があることです。特に、次の文字列を関数に渡す htmlawed を使用しています。

func('iframe=-*,src(match="/^(http:\/\/www\.youtube\.com\/embed\/)[^\/\s\\]+$/")');

問題は、上記の正規表現の種類が機能することですが、スラッシュを無視し、その代わりに何でも受け入れます。

だからこそ、逃げることに問題があるのではないかと思うのです。

これらのスラッシュとバックスラッシュをエスケープする別の方法をアドバイスしていただければ幸いです...何か方法があるに違いありませんか?

4

2 に答える 2

3

文字列がある場合は、文字列リテラルのバックスラッシュ (および引用符) をエスケープする必要があります。または、関数が文字列から正規表現を構築する方法によっては、スラッシュをまったくエスケープする必要がない場合があります (ここではそうは思いません)。

"iframe=-*,src(match=\"/^(http:\\/\\/www\\.youtube\\.com\\/embed\\/)[^\\/\\s\\\\]+$/\")"
于 2012-08-04T16:40:59.370 に答える
0

PHP では、別の正規表現区切り文字を使用することもできます。

~^(http://www\.youtube\.com/embed/)[^/\s\\\\]+$~
于 2012-08-04T16:58:15.857 に答える