Php 正则表达式:低大写、点、零空格
如何编写一个表达式来检查字符串中是否有大写字母、圆点和空格 到目前为止,下面的代码试图检查是否有小写字母和圆点(无论如何都不行!),但我不知道如何在表达式中添加空格Php 正则表达式:低大写、点、零空格,php,regex,whitespace,preg-match,Php,Regex,Whitespace,Preg Match,如何编写一个表达式来检查字符串中是否有大写字母、圆点和空格 到目前为止,下面的代码试图检查是否有小写字母和圆点(无论如何都不行!),但我不知道如何在表达式中添加空格 # check for matches of lowcaps or lowcaps with a dot if (!preg_match('/([a-z0-9]|[a-z0-9\.])/', $cst_value)) { $error = true; echo ' please use lowcaps only with d
# check for matches of lowcaps or lowcaps with a dot
if (!preg_match('/([a-z0-9]|[a-z0-9\.])/', $cst_value))
{
$error = true;
echo ' please use lowcaps only with dot(s) and without any spacing.';
}
[a-z0-9.]
匹配小写字母、数字或点。[^a-z0-9.]
匹配所有不是小写字母、数字或点的字符。因此,如果
/[^a-z0-9.]/
匹配任何字符串包含lc字母、数字或点以外的内容。如果不符合您的条件,则满足
if ( !preg_match('/[^a-z0-9.]/', $cst_value) ) {
// only lower-case letters, digits or dots
}
或者没有数字
if ( !preg_match('/[^a-z.]/', $cst_value) ) {
// only lower-case letters or dots
}
更新:示例:
foreach( array('abcdef', 'abc de', 'abc.de', 'aBcde') as $cst_value) {
echo $cst_value, ': ';
if ( !preg_match('/[^a-z.]/', $cst_value) ) {
echo " ok.\n";
}
else {
echo "failure\n";
}
}
印刷品
abcdef: ok.
abc de: failure
abc.de: ok.
aBcde: failure
我应该这样做。想想看,只允许使用小写字母、圆点和数字。如果包含任何空格,则表达式将不匹配。顺便说一句,您不必在捕获组中转义元字符
^
和$
表示整个字符串应仅包含捕获组中的那些字符(它们标记字符串的开始和结束),并且+
表示必须至少出现其中一个字符。根据需要,您可以将其更改为,例如,{3,}
,这意味着字符串长度必须至少为3个字符
例如:
$values=array("fooBar", "123.45", "foo bar", "foo.bar");
foreach($values as $value) {
if (!preg_match('/^[a-z0-9.]+$/', $value))
{
echo "Not valid: $value\n";
}
}
印刷品:
Not valid: fooBar
Not valid: foo bar
我想你想要这个:
if ( preg_match( '/[^a-z0-9.]/' ) ) {
$error = true;
}
请记住,我删除了!。现在,如果匹配,您将得到错误。VolkerK倒过来,但忘了取下!,我想
还有,是你的朋友。
'/^[a-z0-9.]+$/'
应该是正确的正则表达式。到OP,所有的答案都使用[a-z]
。。。“触摸”。全部为“小写”,但与建议的正则表达式不匹配。给OP:应该吗?Lowcaps=小写大写?这就像“小巨人”。你不需要在字符类中逃逸
。您的角色类应该是[a-z0-9.]
您必须从角色组中删除^!在表达式中。@Felix Kling:可能是!,但肯定不是^。增加了一个例子。@Felix是对的,你用双负数在圆圈中编码。我会选择/^[a-z0-9.]+$/
(好的)或/[^a-z0-9.]/
(坏的)。@Alan:好的,然后拆下!如果真的让你感到困扰,请切换if/else分支。如果你不关心任何其他的英语字母字符,所有这些都可以正常工作。如果是,则应使用\p{Ll}匹配“小写字符”。它还捕捉到挪威语中的æå等:)。这里有更多关于正则表达式和Unicode的信息:谢谢。它工作得很好,但如果我在开始时使用带有http://的URL进行测试。它将在不匹配的输出中打印此URL。为什么呢?我可以接受URL输入吗?thanks@lauthiamkok字体正如我所说,正则表达式的基本意思是:接受任何小的东西,数字或点。但是http://
也包含:
和/
。您还必须将这些字符添加到character类中,但它不会验证URL是否正确。
if ( preg_match( '/[^a-z0-9.]/' ) ) {
$error = true;
}