0

ユーザーが HREF リンクを入力できないようにする複数行のテキスト ボックスがあります。したがって、次のように正規表現を使用して文字列一致を試みています。しかし、エラーメッセージが表示されません。私は何を間違っていますか?

Regex strMatch = new Regex(@"^(?:(?:<a )?href|</a>)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
if (strMatch.IsMatch(EmailTextBox.Text.Trim()))
 {
   vsumPage.AddErrorMessage("Cannot enter links");
 }

また、JS でも同じチェックが機能する必要があります。しかし、それは私にいくつかの例外を与えています。何が間違っているのかわかりません。これが私のJS関数です

function doPreview()
 {
  var getEncodedStr = encode("<%=EmailTextBox.ClientID%>"); 
  var strInvalid = "Email instructions cannot have links included";
  var str = getEncodedStr.match(/@"(?:<a )?href|</a>"/) ;
  if (str == null)
  {
    var targetURL = 'Preview.aspx?txtName=' + getEncodedStr ;
    window.open(targetURL, null, "height=700,width=600,dependent=yes,hotkey=no,menubar=no,resizable=yes,scrollbars=yes,status=no,titlebar=no,toolbar=no");
    return false;
  }
  else
  {
   alert(strInvalid);
  }
}

これが私がテストしている出力です

Testing Testing <br/>
<b> Hello Testing </b> <br/>
<b> Testing 2000 character and link check </b> <br/>
<b> Hello </b> <a href="www.google.com">Click Me </a>

再更新: 以下に示すようにこれを試しました: しかし、常にアラート「Test3 0」の部分になります...

          function doPreview()
      {
          var getEncodedStr = encode("<%=EmailTextBox.ClientID%>"); 
          var strInvalid = "Email instructions cannot have links included";
          var checkCount = "0" ;
          alert("Test 1" + checkCount);
          if(/<\/[\s\S]?a\b/gm.test(decode(getEncodedStr)))
          { 
            checkCount = "1" ;
            alert("Test 2" + checkCount);
            alert((/<\/?a\b/.test(decode(getEncodedStr))));
            return false;
          }
          if (checkCount == "0")
          {                  
            alert("Test 3" + checkCount);
            var targetURL = 'EPreview.aspx?txtName=' + getEncodedStr ;
            window.open(targetURL, null, "height=700,width=600,dependent=yes,hotkey=no,menubar=no,resizable=yes,scrollbars=yes,status=no,titlebar=no,toolbar=no");
            return false;
          }
      }
4

1 に答える 1

0

は、この^パターンが文字列の先頭にあることを表明します。削除してみてください。また、おそらくパターンを次のように変更できます。

@"</?a\b"

これは単に<aor</aを検索し、単語境界を使用してそれが実際にアンカータグであることを確認します\b(これは、後に文字、数字、またはアンダースコアが存在しないことをアサートしますが、スペースまたは>など)。

それでもうまくいかない場合は、実際の入力を確認すると非常に役立ちます。

于 2012-12-03T19:19:42.817 に答える