我在使用Regex时遇到了一些麻烦但从未真正使用它。但是,基本上我试图对我的字体大小的bbcode标记设置限制。
class SizeValidator implements \JBBCode\InputValidator
{
public function validate($input)
{
return (bool) preg_match('regex', $input);
}
}
如果有人可以帮助正则表达式完美!基本上只需要7到30的大小,没有px,em,没有严格的数字最多2个数字,如果任何有正则表达式经验的人会非常有帮助,可能解释它是如何工作的,所以我可以改进并获得更好的理解:)
答案 0 :(得分:1)
这里没有理由使用正则表达式。
只需验证您获得的是一系列数字(例如使用ctype_digit
,并且该值介于7到30之间。
class SizeValidator implements \JBBCode\InputValidator {
public function validate($input) {
return ctype_digit($input) && $input >= 7 && $input <= 30;
}
}
如果需要,它更易读,更容易修改。
答案 1 :(得分:-1)
您可以尝试这样的事情:
return (bool)preg_match('/\[size=(([7-9])|([1-2]\d)|(30))\](.*)?\[\/size\]/', $input);
首先我匹配,如果数字是7-9,如果是,你的函数返回true。
([7-9])
否则,如果您的号码是以1或2开头的两位数字,那么该函数也会返回true
([1-2]\d)
或者我检查数字是否为30并返回true。