PHP正则表达式允许字母数字加连字符和句点

时间:2010-03-25 10:03:20

标签: php regex

我真的不理解正则表达式,并且想知道以下正则表达式的作用。我希望我的地址和姓名接受.-和字母数字。

这会起作用还是需要改进?另外,如果有人可以分解正则表达式'/^[A-Z0-9 \'.-]{1,255}$/i',那么我可以更好地理解每个部分。

这是php代码。

if (preg_match ('/^[A-Z0-9 \'.-]{1,255}$/i', $_POST['address'])) {
    $address = mysqli_real_escape_string($mysqli, htmlentities($_POST['address']));
} else {
    echo '<p class="error">Please enter your address!</p>';
}

if (preg_match ('/^[A-Z0-9 \'.-]{1,255}$/i', $_POST['name'])) {
    $name = mysqli_real_escape_string($mysqli, htmlentities($_POST['name']));
} else {
    echo '<p class="error">Please enter your name!</p>';
}

2 个答案:

答案 0 :(得分:3)

/:正则表达式分隔符

^:在字符串

的开头锚定匹配项

[A-Z0-9 \'.-]:匹配一个字母(A-Z,没有重音字符),数字,空格,撇号,点或短划线

{1,255}:介于1到255次之间。

$:将匹配项锚定在字符串的末尾。与^一起,这可以确保整个字符串必须匹配,而不仅仅是子字符串。

/:正则表达式分隔符

i:使正则表达式不区分大小写

答案 1 :(得分:0)

您的模式基本上允许以下任意组合(1到255个字符之间):A-Z,0-9,空格,\,',.

如果这足够好,请自行决定。

至于你的模式:

/^[A-Z0-9 \'.-]{1,255}$/i 

最后的i意味着它不区分大小写

/^[A-Z0-9 \'.-]{1,255}$/ 

斜线表示模式的开头和结尾

^[A-Z0-9 \'.-]{1,255}$

^是开头,$是你要查找的字符串的结尾

[A-Z0-9 \'.-]{1,255}

这允许括号之间的字符重复1到255次