当前位置:  开发笔记 > 编程语言 > 正文

RegEx告诉字符串是否包含特定字符

如何解决《RegEx告诉字符串是否包含特定字符》经验,为你挑选了3个好方法。

这次容易提问.

我正在尝试测试字符串是否包含使用正则表达式的字符.我认为表达式的形式为"[^ x ]",其中x是您不想出现的字符,但这似乎不起作用.

例如,

Regex.IsMatch("103","[^0]")

Regex.IsMatch("103&","[^&]")

两者都返回true(我希望是假的).

我开始使用"[^&]"并认为可能需要将其作为\&进行转义,但它似乎没有任何区别.

想法?我认为它很小.

另外,我正在使用.NET,所以请记住这一点.

EDIT1:

我找到了这个,但它似乎没有回答我遇到的问题.

EDIT2:

我想回应凯文和乔尔的建议.这些建议确实会更快,但是在这种情况下它们无法实现我需要的灵活性,所以如果你通过搜索找到这个问题,那么一定要看看他们的答案是否符合你的需求.在我的例子中,正则表达式被传递给DataTable验证方法,该方法遍历每一行并验证特定列中该行的内容是否与传入的RegEx匹配.因为我将重用此方法对于其他几个正在验证的DataTable,我想:

    使用Regex启用最广泛的验证,以及

    总是寻找一个积极的匹配(即不使用!Regex.IsMatch(cell,regexvariable),我想依靠始终能够使用Regex.IsMatch(cell,regexvariable),因为调用此方法的大多数DataTables将使用积极的匹配而不是消极的.

希望这会有所帮助.



1> Jorge Ferrei..:

你的解决方案是对的.您看到的匹配是针对其他角色的.你想说的是"嘿!我不想在整个字符串中看到这个字符".

在这种情况下,你做:

Regex.IsMatch("103","^[^0]*$")


我猜是这样的!Regex.IsMatch("103","0")实际上会更快.

2> Ken Paul..:

模式[^ 0]将匹配任何非零的字符.在两个示例中,模式将匹配第一个字符("1").要测试整个字符串是否不包含零,模式应为"^ [^ 0]*$".其内容如下:从字符串的开头开始,匹配任意数量的非零字符,紧接着字符串的结尾.任何包含零的字符串都将失败.任何不包含零的字符串都将通过.



3> Kevin..:

如果你正在寻找一个字符串中的单个字符,正则表达式似乎有点矫枉过正.为什么不直接使用.IndexOf或.Contains?

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有