如何检查字符串是否只包含英文字母?

时间:2016-09-16 17:07:09

标签: php regex string

我使用PHP,我需要检查是否是由

组成的字符串
  • 英文小写字母
  • 破折号
  • 下划线

这样的事情:

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

以下是一些例子:

limit

3 个答案:

答案 0 :(得分:1)

使用PHP函数

preg_match() 

使用这个正则表达式:

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

\是要逃脱下划线和破折号。 +表示您必须至少拥有1个字符。

这是正则表达式http://www.regexpal.com/

的便捷工具

答案 1 :(得分: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;
}

答案 2 :(得分:1)

要匹配仅包含1个或多个小写ASCII字母,连字符或下划线的整个字符串,请使用

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

请参阅regex demo

<强>详情:

  • ^ - 字符串开头
  • [-a-z_]+ - 一个或多个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
}