2014-01-29 115 views
0

我想使用的preg_match表單驗證。正則表達式需要匹配任何不僅包含字符的輸入,而且字符後跟一個連字符,後面跟着更多的字符。PHP正則表達式 - 僅匹配一個字,或連字符的單詞

換句話說正則表達式應該捕捉任何輸入不是字符[A-Z]和一個連字符的單詞(在中間,其中只存在一個連字符)的由一個字。

正則表達式還應該用尾部連字符(在連字符後面沒有其他單詞,例如「hello-」)並且還應該用起始連字符(例如「 - hello」)來捕捉單詞。

任何幫助將不勝感激。

回答

1

試試下面的代碼 - 如果我明白你的問題,這將只匹配john-smith,這是你想要的。請注意 - 這幾乎就是@Wrikken在之前的評論中提出的。

<?php 
$test = array("john-smith", "123john", "john-", "john and mary smith"); 
$regex = '/^([a-z]+(?:-[a-z]+)?)$/i'; 
foreach($test as $t) { 
    if(preg_match($regex, $t, $m)) { 
    echo "$t matches!\n"; 
    } 
} 
?> 

見在

http://regex101.com/r/aU3qM0

演示
相關問題