RegEx Expression帮助

时间:2009-06-24 15:57:47

标签: c# asp.net regex

我需要一个正则表达式,不会让某人继续查看单词'box'或'Box'或'BOX'中的类型后跟数字。为了实现这一点,必须满足这两个条件,单词框和数字不是一个或另一个。有谁知道怎么写这个?

编辑:

嘿伙计们,我已经尝试了一些,问题是它阻止了常规地址,如1234 S. Something Lane。我想要阻止的是用户输入类似p.o的内容。方框1234.我们用“盒子”这个词来形容任何东西,不应该接受它之后的数字。

感谢

7 个答案:

答案 0 :(得分:6)

在澄清问题后编辑:

new Regex(@"\bbox\s*\d+", RegexOptions.IgnoreCase);

这将使“box”单独匹配,在输入字符串中的任何位置可选地后跟空格,后跟数字。所以它会匹配:

  • box12
  • Box 12
  • P.O。方框12
  • BOX 12a

不匹配:

  • boxtree 12
  • boombox 12
  • Box Pog
  • Box Pog 12

(如果您的原始问题已经解释了您实际上要做的事情,那将会非常有用!)

答案 1 :(得分:5)

(box|Box|BOX)[0-9]+
澄清问题后

编辑

我猜你真的想要一个不区分大小写的搜索:

box\s*\d+
  • \s* :任意数量的空白
  • \d + :至少一个号码

如果需要,您可以定义位数。 3-5位数的示例:

box\s*\d{3,5}

答案 2 :(得分:0)

至少根据我的经验,编写一个RegEx以更严格地匹配预期案例更容易,而不是试图排除特殊情况。

答案 3 :(得分:0)

如果您展示了您希望接受的格式示例,则人们可以更轻松地回答此问题。

如果您想要使用“Box”的任何变体为字符串添加前缀,然后使用数字,那么这样的东西应该有用(确保使用RegexOptions.IgnoreCase)

^box\d+$

哪个匹配...

box1
BOX1234567
bOx3
...etc...

答案 4 :(得分:0)

你试过像

这样的事吗?
/box\d+/

加上IgnoreCase?

答案 5 :(得分:0)

这个:

box|Box|BOX\d+

将匹配这些特定情况框,Box,BOX以及所有这些后跟数字,但在这种情况下它也将返回true,例如:

asBox123asdasd

如果你希望如果字符串恰好是box123,那么你应该使用:

^box|Box|BOX\d+$

代替

答案 6 :(得分:0)

不要忘记“邮局”选项。

^(p(ost |。)* o(ffice |。))?box * [0-9] + $