基本上我需要匹配这样的东西:
0000-000 Text with spaces
其中,0000-000和0是任意数字,后跟空格后跟任意文本,带空格。
我记下了数字:
/^\d{4}(-\d{3})?$/
但是我很难得到文字......
答案 0 :(得分:5)
它很接近,但您也可以使用此模式来匹配文本:
/^\d{4}(-\d{3})? ([\w\s]+)$/
\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)