我需要一个正则表达式来匹配任何字母,但不是数字或标点符号。我试过这样做:
$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