改进子域语言的preg_match

时间:2013-04-28 09:00:48

标签: php preg-match

对于多语言域名,我有以下网址字符串:

de.example.com
it.example.com
XX.example.com

而且只是:

example.com

语言代码应为2个字符[a-z]

所以我使用preg_match来比较字符串是否匹配:

'!^(.*).example.com$!'

它与anylanguage.example.com相匹配,但单个domain.com字符串有问题吗?如何将preg_match修改为两个条件?谢谢!

3 个答案:

答案 0 :(得分:2)

如果语言总是2个字母:

'!^([a-z]{2})?\.?example\.com$!'

答案 1 :(得分:2)

'!^(?:([a-z]{2})\.)?example\.com$!i'

的变化:

  • .表示“任何字符”,而非“点”
  • ?表示“可选”
  • [a-z]表示“从a到z的任何字符”
  • {2}表示“正好两个”
  • i标志表示“不区分大小写”
  • (?:....)是一种非捕捉模式

答案 2 :(得分:1)

如果domain.com与正则表达式不匹配,则使用点字符。所以我将它修改为这种格式:

'!^(.*)[\.]?domain.com$!'