【问题标题】:What am I doing wrong? The error message is not showing up [closed]我究竟做错了什么?错误消息未显示[关闭]
【发布时间】:2012-12-03 19:14:30
【问题描述】:

我有一个多行文本框,我不应该允许用户在其中输入任何 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;
          }
      }

【问题讨论】:

  • 您尝试使用的字符串是什么?马上,看起来我可以拥有 并且它会接受它。
  • 为什么票数接近?这里的所有其他正则表达式问题都是“我如何编写正则表达式来检测等等等等”。回应总是“你试过什么?”。 Ditty 实际上已经告诉我们他尝试了什么,但显然现在它“过于本地化”了?

标签: c# javascript html regex


【解决方案1】:

^ 断言此模式出现在字符串的开头。尝试删除它。您也可以将模式更改为:

@"</?a\b"

这将简单地查找&lt;a&lt;/a,通过使用单词边界\b(它断言之后没有字母、数字或下划线 - 但是例如空格或&gt;)。

如果不这样做,那么查看您的实际输入确实会有所帮助。

【讨论】:

  • 完成。你能检查一下,让我知道我做错了什么吗?我也需要在 JS 中进行相同的检查。我正在使用以下内容,但它给了我一些例外 (
  • 请查看更新并帮助我。谢谢。
  • @Ditty 请再试一次我的正则表达式,我有一个无关的) 在那里。
  • 是的,这行得通。太感谢了。我如何在 JS 中测试它? JS 也给出了一些错误。
  • @Ditty 使用相同的模式,但转义斜线:/&lt;\/?a\b/ 并将其与test 一起使用而不是match
猜你喜欢
  • 2014-06-15
  • 1970-01-01
  • 2013-08-06
  • 1970-01-01
  • 2014-09-13
  • 1970-01-01
  • 2014-05-14
  • 2016-07-18
  • 1970-01-01
相关资源
最近更新 更多