我是最新的,很高兴来到Stackoverflow。我很长一段时间都在关注这个网站。
我有一个输入/文本字段。 (例如“插入你的名字”)
当用户发送数据时,脚本会启动以下控件:
1)控制该字段是否为空。
2)控制字段是否超过允许的最大字符数。
3)控制字段是否包含错误匹配的preg_match正则表达式。 (例如,它包含数字而不是字母 - 没有符号和重音 - )。
问题是:为什么如果我把这个字符“w /”,脚本不能控制?它似乎是字符串旁路控制?
大家好,对不起,如果我迟到的答案(以及发布的非代码^^)。
现在,谈论我的问题。我检查了问题是否仅在我离线工作时(我使用EasyPhp 5.3.6.1)。否则,在线测试的regEx就可以了。
这是我用来获取上述内容的代码:
if (!preg_match('/^[a-zA-Z]+[ ]?[a-zA-Z]+$/', $name)) {
echo "Error";
}
如您所见,此代码匹配:
...对吧?!
(如果我错了,请纠正我)
感谢所有人!
疣
答案 0 :(得分:2)
我对要求的阅读是
下面的代码以非常简单的方式对此进行检查,并且只是发现它发现的任何错误;你可能想要在检测到错误时做一些更有用的事情。
<?php
$max = 10;
$string = 'w/';
// Check only letters; the regex searches for anything that isn't a plain letter
if (preg_match('/[^a-zA-Z]/', $string)){
echo 'only letters are allowed';
}
// Check a value is provided
$len = strlen($string);
if ($len == 0) {
echo 'you must provide a value';
}
// Check the string is long to long
if ($len > $max) {
echo 'the value cannot be longer than ' . $max;
}
答案 1 :(得分:2)
你也可以试试这个:
if (preg_match('/^[a-z0-9]{1,12}/im', $subject)) {
\\ match
}
以上内容仅与@genesis'相匹配,但仅在$ subject介于1到12个字符之间时匹配。正则表达式也不区分大小写。
答案 2 :(得分:0)
工作正常。
<?php
$string = '\with';
if (preg_match('~[^0-9a-z]~i', $string)){
echo "only a-Z0-9 is allowed"; //true
}
http://sandbox.phpcode.eu/g/18535/3
你必须确保你没有将用户输入放入你的正则表达式,因为这意味着你可能会检查错误。