0

オープニング HTML タグに一致する正規表現を作成しようとしました。

<\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)>

私が思いついたものです。RegexPal.comでうまく機能します http://gyazo.com/cef34f653c4a3483a31394330455c0cf しかし、JS(ChromeとNodeの両方)のテキストで使用しようとするとすぐに、これが発生します:http://gyazo.com/0c938ee289c1632f3f576aaccda1f81e

ルールは次のように定義されます。

var Rules = [
    new RegExp("<\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)/>"),
    new RegExp("<\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)>"),
    new RegExp("</\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)>")
];

Content は次のように定義されます。

var Content = "<!DOCTYPE HTML><html><head><title>derp</title></head><body><div class=\"derp\"><!--this is formatted terribly -->derp<br /></div></body></html>";
4

2 に答える 2

2

問題は、使用したい場合RegExp()は を 2 倍にする必要があることです\

 new RegExp("<\\w+((\\s+...

RegExp を削除して、単に使用する方がよいでしょう。/regExp/

var Rules = [
    /<\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)/>/,
    /<\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)>"/,
    /</\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)>/
];
于 2013-05-17T14:53:17.393 に答える
0

文字列内で使用する場合は、 にエスケープする必要があります\\\そうしないと、その後に続くものをエスケープするだけです。

\文字をエスケープするか/regex/、正規表現を定義する構文を使用してください。

于 2013-05-17T14:53:14.317 に答える