如何正确匹配正则表达式,在开头或结尾没有任何东西?

时间:2012-10-12 22:32:57

标签: regex

我现在一直在寻找RegEx的帮助,但我想我需要一位专家来帮助我。我认为这可以通过RegEx实现,但无法弄清楚如何。

这是我要找的比赛。如果它不匹配,我想知道:

\w{2,4}\s\d{4}

我基本上想要匹配普通学校的课程名称。要求如下:

  1. 第一部分是2-4个字母
  2. 第二部分恰好是4个数字
  3. 两者之间必须有空格
  4. 如果还有其他变体,我想停止运行下一段代码。我可以很容易地修剪左右两端的空间,但我想确保那里没有别的东西。

    我的问题是我当前的表达式允许某人输入COMD 1500-B。我仍然得到一个匹配,我理解为什么,但我想确保如果有人输入超过4个数字我可以停止并抛出错误。除了有超过4个字母。我认为{}应该是最大的。

2 个答案:

答案 0 :(得分:1)

^表示字符串的开头,$表示字符串的结尾。因此,^\w{2,4}\s\d{4}$确保整个字符串与模式匹配,而不仅仅是匹配字符串的子集。

答案 1 :(得分:0)

你应该使用正则表达式

^[a-zA-Z]{2,4}\s+\d{4}$

如果只允许使用大写字母,那么请使用正则表达式

^[A-Z]{2,4}\s+\d{4}$

如果只允许一个空格字符,则将\s+替换为\s。如果这样的空格只是空格字符(是的,我们有更多的空白字符),那么用空格字符\s替换

^[A-Z]{2,4} \d{4}$