我在RegEx很糟糕。任何人都可以显示正则表达式,如果我想检查一个字符串的任何数字0-9,小数点和百分号?
我试过这个......
if (preg_match('/[^0-9.]+%/i', $string)) {
echo 'invalid';
}
但它无法正常工作。我有一个输入字段,询问用户应该是什么税率,这将验证他们已经输入了VALID税率。我希望他们输入它,例如" 5.2%"而不是十进制,我将在后端进行数学计算。
有效的匹配将是" 6%"或" 5.2%"等等 INVALID匹配将是" 2"或" 0.05"或" A"
答案 0 :(得分:2)
查找有效匹配,然后在测试中将其反转:
if (!preg_match('/[\d.]%/', $string) {
echo 'invalid';
}
但是因为这应该测试整个字符串,而不只是在其中的任何地方寻找一个百分比,你需要锚定它:
if (!preg_match('/^[\d.]+%$/', $string) {
echo 'invalid';
}
请注意,这将允许.%
之类的内容。您可能应该使用类似Regular expression to match numbers with or without commas and decimals in text的内容来匹配数字部分。
答案 1 :(得分:1)
您可以匹配有效输入并反转if条件:
if (preg_match('/\b\d*\.?\d+%/', $string) === FALSE) {
echo 'invalid';
}