0

だから私はこのJavaScript正規表現を持っています:

var reg = new RegExp("(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))");

現在、引用符がオーバーフローし、その後の行を引用しているため、引用符が含まれるように引用符をエスケープするにはどうすればよいですか。

編集:正規表現の展開:

(?xi)
\b
(                           # Capture 1: entire matched URL
  (?:
    [a-z][\w-]+:                # URL protocol and colon
    (?:
      /{1,3}                        # 1-3 slashes
      |                             #   or
      [a-z0-9%]                     # Single letter or digit or '%'
                                # (Trying not to match e.g. "URI::Escape")
    )
    |                           #   or
    www\d{0,3}[.]               # "www.", "www1.", "www2." … "www999."
    |                           #   or
    [a-z0-9.\-]+[.][a-z]{2,4}/  # looks like domain name followed by a slash
  )
  (?:                           # One or more:
    [^\s()<>]+                      # Run of non-space, non-()<>
    |                               #   or
    \(([^\s()<>]+|(\([^\s()<>]+\)))*\)  # balanced parens, up to 2 levels
  )+
  (?:                           # End with:
    \(([^\s()<>]+|(\([^\s()<>]+\)))*\)  # balanced parens, up to 2 levels
    |                                   #   or
    [^\s`!()\[\]{};:'".,<>?«»“”‘’]        # not a space or one of these punct chars
  )
)
4

1 に答える 1

1

JavaScript で正規表現のネイティブ宣言形式を使用するだけの場合:

var reg = /regex here/;

次に、何もエスケープせずに、正規表現で自由に引用符を使用できます。バックスラッシュを前に置いて、正規表現のスラッシュをエスケープする必要があります。

文字列形式に固執したい場合は、前にバックスラッシュを付けて引用符をエスケープし、文字列ターミネータにならないようにすることができます。

var reg = new RegExp('My dog\'s breath');
于 2012-09-15T00:47:08.680 に答える