如何编写一个表达式来检查字符串中的低位,点和没有任何空格?
到目前为止,下面的代码试图检查低点和点(它无论如何都不起作用!)但我不知道如何在表达式中添加空格。
# 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.';
}
答案 0 :(得分:3)
[a-z0-9.]
匹配小写字母或数字或点
[^a-z0-9.]
匹配所有不是小写字母或数字或点的字符
因此,如果/[^a-z0-9.]/
匹配任何位置,则字符串包含除lc-letter,digit或dot之外的其他内容。如果不符合您的条件就满足了。
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
答案 1 :(得分:0)
/^[a-z0-9.]+$)/
应该这样做。想想只允许使用小写字母,点和数字。如果包含任何空格,则表达式将不匹配。顺便说一句。您不必在捕获组中转义元字符。
^
和$
表示整个字符串应该只包含捕获组中的那些字符(它们标记字符串的开头和结尾),而+
表示必须出现这些字符中的至少一个。根据您的需要,您可以将其更改为例如{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
答案 2 :(得分:0)
我想你想要这个:
if ( preg_match( '/[^a-z0-9.]/' ) ) {
$error = true;
}
请记住,我删除了!现在,如果匹配,则会出现错误。 VolkerK扭转了它,但我忘了忘掉了!,我想。
此外,http://regexpal.com/是您的朋友。
答案 3 :(得分:0)
'/^[a-z0-9.]+$/'
应该是正确的正则表达式。