基本上我需要匹配这样的东西:
0000-000 Text with spaces
其中 0000-000 和 0 是任意数字,后跟一个空格,后跟任意文本,带有空格。
我把数字记下来了:
/^\d{4}(-\d{3})?$/
但我很难得到文字......
它很接近,但您也可以使用此模式来匹配文本:
/^\d{4}(-\d{3})? ([\w\s]+)$/
从文档中:
\d
任何十进制数字\s
任何空白字符\w
任何“单词”字符“单词”字符是任何字母或数字或下划线字符,即任何可以成为 Perl“单词”一部分的字符。字母和数字的定义由 PCRE 的字符表控制,并且如果发生特定于语言环境的匹配,可能会有所不同。例如,在“fr”(法语)语言环境中,一些大于 128 的字符代码用于重音字母,这些字符由\w匹配。
试试这个正则表达式
/^\d{4}(-\d{3})? .+$/
对于不认为每个人都只使用标准美国英语字符集的人:
/^\d{4}(-\d{3})? ([\p{L}\s]+)$/u
\p{L}
匹配任何归类为字母的 Unicode 代码点,无论语言如何。最后需要该u
标志,以便 PHP 的 PCRE 引擎需要 Unicode。
如果您只想匹配数字后的文本和空格,您可以执行以下操作:
/^\d{4}(-\d{3})?[ a-zA-Z]+$/