正则表达式帮助,匹配“0000-000文本与空格”

时间:2013-07-03 17:06:07

标签: php regex

基本上我需要匹配这样的东西:

0000-000 Text with spaces

其中,0000-000和0是任意数字,后跟空格后跟任意文本,带空格。

我记下了数字:

/^\d{4}(-\d{3})?$/

但是我很难得到文字......

5 个答案:

答案 0 :(得分:5)

它很接近,但您也可以使用此模式来匹配文本:

/^\d{4}(-\d{3})? ([\w\s]+)$/

来自documentation

  
      
  • \d任何十进制数字
  •   
  • \s任何空格字符
  •   
  • \w任何“字”字符
  •   
     

“单词”字符是任何字母或数字或下划线字符,即任何可以成为Perl“ 单词 ”一部分的字符。字母和数字的定义由PCRE的字符表控制,如果发生特定于语言环境的匹配,则可能会有所不同。例如,在“fr”(法语)语言环境中,一些大于128的字符代码用于重音字母,并且这些字符代码由 \ w 匹配。

答案 1 :(得分:4)

试试这个正则表达式

/^\d{4}(-\d{3})? .+$/

答案 2 :(得分:2)

对于那些不认为每个人都使用标准美国英语字符集的人:

/^\d{4}(-\d{3})? ([\p{L}\s]+)$/u

\p{L}匹配任何被归类为字母的Unicode代码点,无论语言如何。最后需要u标志,以便PHP的PCRE引擎需要Unicode。

答案 3 :(得分:0)

如果您想在数字后只匹配文字和空格,您可以这样做:

/^\d{4}(-\d{3})?[ a-zA-Z]+$/

答案 4 :(得分:0)

这是一个交互式正则表达式编辑器(适用于Ruby但适用于php)

http://rubular.com/r/ocbo5Sea8m

[0-9]{4}-[0-9]{3} .+

似乎工作