2

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

0000-000 Text with spaces

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

我把数字记下来了:

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

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

4

5 回答 5

5

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

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

文档中:

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

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

于 2013-07-03T17:07:57.213 回答
4

试试这个正则表达式

/^\d{4}(-\d{3})? .+$/
于 2013-07-03T17:07:17.210 回答
2

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

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

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

于 2013-07-03T17:18:01.423 回答
0

如果您只想匹配数字后的文本和空格,您可以执行以下操作:

/^\d{4}(-\d{3})?[ a-zA-Z]+$/
于 2013-07-03T17:08:02.343 回答
0

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

http://rubular.com/r/ocbo5Sea8m

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

似乎工作

于 2013-07-03T17:12:25.547 回答