2016-04-22 80 views
0

我对正则表达式很陌生,我想检查一个与确切的给定单词匹配的句子,后跟空格和一个字母数字字符串以数字和长度开头该字符串应该是8.从下面的表达式我得到1作为结果并匹配采购订单。但我没有得到如何创建规则来匹配采购订单后跟空格,并启动一个字符串与首字母数字和长度为8个字符。任何帮助将不胜感激。创建正则表达式匹配空格,后跟字符串长度8

$header = 'Amazon.fr PO 2YCLN4EM'; 
$k = preg_match("/[PO]*/", $header); 
echo $k; 
+1

仅供参考http://php.net/manual/en/reference.pcre.pattern.syntax.php – Gordon

回答

2
$header = 'Amazon.fr PO 2YCLN4EM'; 

if (preg_match('/PO\ \d\w{7}/', $header, $matches)) { 
    print_r($matches); 
} 

注意该功能只返回你是否有一个匹配与否。第三个参数包含匹配项。

+1

'\ w'会匹配数字和字母。所以没有必要把'\ d \ w' – mkHun

+0

其实,你是对的!我以\ dA-Z模式开始,然后将A-Z更改为\ w。我编辑了答案。 – BeS

+1

小改进:OP希望'匹配确切的给定单词后跟空格...',确切的给定_word_是'PO'。因此,为了排除单词后缀'PO',请在正则表达式中添加一个开始定位点/非单词字符匹配:'/(^ | \ W)PO \ \ d \ w {7} /'。 – collapsar

2

尝试如下

使用\dLimiting Repetation用于精确匹配7倍。 DEMO

/PO\s\d\w{7}/ 
+0

nitpick:\ s表示任何空格字符,不一定只是空格。 – Gordon