0

文字列の正規表現をほぼ1日作成しようとしましたが、まだ機能していません。誰か助けてもらえますか?

string example (double quotes are options, and can also be single quotes):
    "234"? "<img src=\"http://abc.com/a.jpg\" onclick=\"alert(\"\"working with 'quotes'?\"\");\" />"

and the following groups should be extracted:
    234
    <img src="http://abc.com/a.jpg" onclick="alert(""working with 'quotes'?"");" />

これが明確であることを願っています、誰もがplsを助けます!!

4

2 に答える 2

1

この正規表現の効率についてはわかりませんが、これがあなたの文字列に一致するものです。

ルール

  1. 数字の前後の引用符はオプションであり、一重引用符にすることができます。
  2. htmlを囲む引用符はオプションであり、一重引用符にすることができます。
  3. 疑問符の後のスペースは0または多数にすることができます。

入力

"234"? "<img src=\"http://abc.com/a.jpg\" onclick=\"alert(\"\"working with 'quotes'?\"\");\" />"

正規表現

^['"]?(?<number>\d+)['"]?\?\s*['"]?(?<html>\<.*\>)['"]?$

出力グループ

number: 234
html: <img src=\"http://abc.com/a.jpg\" onclick=\"alert(\"\"working with 'quotes'?\"\");\" />
于 2012-04-19T15:14:57.880 に答える
0

これは(JavaScriptの)簡単な解決策です:

var s = "\"234\"? \"<img src=\"http://abc.com/a.jpg\" onclick=\"alert(\"\"working with 'quotes'?\"\");\" />\"";
var matches = s.match(/['"][\d]*['"](?=[\s]*\?)|['"]<[^><]*>['"]/ig);

最初の部分['"][\d]*['"](?=[\s]*\?)は引用符内の数字と一致し、その後にオプションのスペースと?が続きます。
2番目の部分['"]<[^><]*>['"]は、引用符と<>内のすべての記号(<、>を除く)と一致します。

このソリューションの欠点の1つは、一致した結果が引用符で囲まれていることです。
それがあなたが必要なものを実装するのに役立つことを願っています。

于 2012-04-19T14:56:08.970 に答える