REGEX用于任何字母表中的字母字符,不包括其他所有字母

时间:2011-07-27 08:58:24

标签: php regex

我需要一个正则表达式来匹配任何字母的字母,但不是数字或标点符号。我尝试过这样的事情:

$match = "~\b(,\s?\b)*$~";

$match = "~\w+(,\s?\w+)*$~";

但两者都是破折号等等。

我甚至试图写一个像[^0-9 -+,.*&]这样的排除,但这是一个试图逃脱逃脱的噩梦。任何帮助都感激不尽。

注意:这是昨天关于逗号分隔列表的问题:validate comma separated list using regex

此:

 $value = '[A-Z]+';
$match = "~^$value(,\s?$value)*$~i";

           if (!empty($associations) && !preg_match($match,$associations))

//return error, not comma seperated list of words
}
else {
// go ahead
}

然后客户要求它与变音符号相匹配

3 个答案:

答案 0 :(得分:3)

试试这个

$match = "~^\p{L}+(,\s?\p{L}+)*$~u";

\p{L}是类别字母中的unicode代码点,没有数字,没有标点符号See here on regular-expressions.info

您必须与修饰符u

一起使用

我发现它不能与边界\b一起使用。

重要提示:为了确保验证完整字符串,需要使用^$

将模式锚定到开头和结尾

答案 1 :(得分:0)

更新:回答调整以验证逗号分隔列表

在匹配查询之前设置语言环境对我有用:

setlocale(LC_ALL, 'de_DE');
preg_match_all('/(?:^|,\s*)\b([[:alpha:]]+)/', 'Viele, Köche, verderben, den, Brei', $m);
var_export($m);

应该产生:

array (
  0 => 
  array (
    0 => 'Viele',
    1 => ', Köche',
    2 => ', verderben',
    3 => ', den',
    4 => ', Brei',
  ),
  1 => 
  array (
    0 => 'Viele',
    1 => 'Köche',
    2 => 'verderben',
    3 => 'den',
    4 => 'Brei',
  ),
)

答案 2 :(得分:-3)

'你的问题的解决方案写在下面

'Regular expression:

"[^a-zA-Z]"

'Regular expression for accepting characters only in C#.net


    public bool IsAlpha(String strToCheck)
       {

    Regex objAlphaPattern=new Regex("[^a-zA-Z]");

   return !objAlphaPattern.IsMatch(strToCheck); 

        }


     'Regular expression for accepting characters only in vb.net



      Public Function IsAlpha(ByVal strToCheck As String) As Boolean

         Dim objAlphaPattern As Regex = New Regex("[^a-zA-Z]")

          Return Not objAlphaPattern.IsMatch(strToCheck)

       End Function



     Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)        Handles Button1.Click

    If IsAlpha(TextBox1.Text) = True Then
        Label1.Text = "Valid"
    Else
        Label1.Text = "Invalid"
    End If
End Sub