我需要一个正则表达式来匹配任何字母的字母,但不是数字或标点符号。我尝试过这样的事情:
$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
}
然后客户要求它与变音符号相匹配
答案 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