我真的不理解正则表达式,并且想知道以下正则表达式的作用。我希望我的地址和姓名接受.
,-
和字母数字。
这会起作用还是需要改进?另外,如果有人可以分解正则表达式'/^[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>';
}
答案 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次