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


REGEX for alphabetic character in any alphabet, excluding everything else

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

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

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

但都允许使用破折号等

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

注意:这是继昨天关于逗号分隔列表的问题:使用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
}

但是客户要求它匹配小写字母

试试这个

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

'p{L}是类别中的unicode代码点字母,没有数字,没有标点符号参见regular-expressions.info

必须与修饰符u

一起使用。

我认识到它不能与词边界'b一起工作。

重要:为了确保完整的字符串被验证,模式需要使用^$锚定到开始和结束

UPDATE:答案调整为验证逗号分隔列表

在匹配查询之前设置区域设置适合我:

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',
  ),
)

你的问题的解决办法写在下面

'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