2016-09-16 227 views
0

我使用PHP,我需要檢查是否是由剛剛如何檢查字符串是否只包含英文字母?

  • 英文小寫字母
  • 破折號
  • 下劃線的字符串?

事情是這樣的:

if (/* the condition */) { 
    // Yes, all characters of the string are English lowercase letters or dash or underline 
} else { 
    // No, there is at least one unexpected character 
} 

下面是一些例子:

$str = "test"; // true 
$str = "test_-'; // true 
$str = "t-s"; // true 
$str = "test1"; // false 
$str = "Test"; // false 
$str = "test?"; // false 
+2

'^ [A-Z _-] + $'應該爲你做 – vks

+0

你指的是被稱爲[基本拉丁語(HTTPS字母:// EN。 wikipedia.org/wiki/ISO_basic_Latin_alphabet)字母。許多字符集還有用於英文文本的其他字母(其中包括帶有音調符號的英文字母字符,撇號,重音符號,cedillas,連字符以及某些字符集中的某些撇號等等)。 –

回答

1

要匹配整個字符串,只包含1個或多個小寫ASCII字母,連字符或下劃線使用

/^[-a-z_]+$/D 

regex demo

詳細

  • ^ - 字符串的開始
  • [-a-z_]+ - 1個或多個ASCII小寫字母,連字符或下劃線
  • $ - 串
  • /D - 修飾符是會使$匹配非常結束的字符串(否則,$也將匹配出現在字符串末尾的換行符)。

PHP:

if (preg_match('/^[-a-z_]+$/D', $input)) { 
    // Yes, all characters of the string are English lowercase letters or dash or underline 
} else { 
    // No, there is at least one unexpected character 
} 
+0

upvoted ...我想你想成爲第一個正則表達式頂級用戶';-)' –

+1

我沒有嘗試任何東西,只是試圖遵循[*在閱讀某人對你的問題的答案後你應該做的第一件事是投票在答案上,就像任何其他用戶(具有足夠的聲譽)一樣。投票答案是有幫助和經過充分研究的,並且回答不是的答案。其他用戶也將對您的問題*](http://stackoverflow.com/help/someone-answers)指導方針進行投票。順便說一句,我(幾乎)總是upvote我回答的問題。 –

1

使用PHP函數

preg_match() 

與此正則表達式:

$regex = [a-z\_\-]+ 

\要逃避下劃線和短劃線。 +意味着你必須至少有1個字符。

這是正則表達式的方便工具http://www.regexpal.com/

1

試試這個關於大小

/** 
* Test if a string matches our criteria 
*/ 
function stringTestOk($str) { 
    return !(preg_match_all('/[^a-z_\-]/', $str) > 0); 
}  

// Examples 
foreach(['test', 'test_-', 't-s', 'test1', 'Test', 'test?'] as $str) { 
    echo $str, ' ', (stringTestOk($str) ? 'true' : 'false'), PHP_EOL; 
} 
相關問題