【问题标题】:Regex Help. What am I doing wrong正则表达式帮助。我究竟做错了什么
【发布时间】:2012-11-19 06:20:45
【问题描述】:

有人可以帮助我,让我知道我做错了什么吗? 我正在用 C# 编写代码。 我正在尝试查找我的多行文本框值是否包含 HREF 或 href 或 <a href</a><A HREF

这是我尝试使用正则表达式的方法。但它给了我解析错误说太多...... 请帮忙。 谢谢

Regex strMatch = new Regex(@"^(HREF|href|<a href|</a>))", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline);

【问题讨论】:

    标签: c# regex string string-comparison


    【解决方案1】:

    您的正则表达式锚定在字符串的开头,因此只有当您的字符串以四个选项之一开头时它才会匹配。

    此外,您还有一个额外的),这会导致正则表达式语法无效。

    试试这个:

    Regex strMatch = new Regex(@"(?:<a )?href|</a>"
        ,RegexOptions.Compiled|RegexOptions.IgnoreCase);
    

    这将匹配您的四个案例,因为前两个是相同的(感谢IgnoreCase),第一个是第三个的子字符串。

    【讨论】:

    • 没有。字符串可能以也可能不以四个选项之一开头。那么如何检查呢?我是 .Net 的新手。
    • 你在你的问题中只说“包含”,你从来没有说过它必须在一开始。在这种情况下,您需要@"^(?:(?:&lt;a )?href|&lt;/a&gt;)"
    • 一个更快速的问题。我可以在 Javascript 中做类似的事情吗?如果有怎么办?在打开子窗口和保存按钮之前,我需要在预览按钮中进行相同的检查。
    • 当然。事实上,几乎是一样的:/^(?:(?:&lt;a )?href|&lt;\/a&gt;)/
    • Sorry..new 到 .net 和 JS。那么我是否使用相同的正则表达式?你能写完整的行代码吗?非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 2019-12-23
    相关资源
    最近更新 更多