Php 正则表达式以匹配除小数以外的任何数字和百分比符号
我对RegEx很在行。如果我想检查字符串中除数字0-9、小数点和百分号以外的任何内容,有人能显示要使用的正则表达式吗 我试过这个Php 正则表达式以匹配除小数以外的任何数字和百分比符号,php,regex,Php,Regex,我对RegEx很在行。如果我想检查字符串中除数字0-9、小数点和百分号以外的任何内容,有人能显示要使用的正则表达式吗 我试过这个 if (preg_match('/[^0-9.]+%/i', $string)) { echo 'invalid'; } 但它不能正常工作。我有一个输入字段,询问用户税率应该是多少,这将验证他们是否输入了有效的税率。我希望他们以“5.2%”的形式输入,而不是以小数形式输入,我将在后端进行计算 有效匹配项应为“6%”或“5.2%”等。 无效匹配可能是“2”
if (preg_match('/[^0-9.]+%/i', $string)) {
echo 'invalid';
}
但它不能正常工作。我有一个输入字段,询问用户税率应该是多少,这将验证他们是否输入了有效的税率。我希望他们以“5.2%”的形式输入,而不是以小数形式输入,我将在后端进行计算
有效匹配项应为“6%”或“5.2%”等。
无效匹配可能是“2”或“0.05”或“A”您可以匹配有效输入,并反转您的if条件:
if (preg_match('/\b\d*\.?\d+%/', $string) === FALSE) {
echo 'invalid';
}
查找有效匹配,然后在测试中反转:
if (!preg_match('/[\d.]%/', $string) {
echo 'invalid';
}
但是,由于这是为了测试整个字符串,而不仅仅是查找其中的某个百分比,因此您需要锚定它:
if (!preg_match('/^[\d.]+%$/', $string) {
echo 'invalid';
}
请注意,这将允许类似
%
的操作。您可能应该使用类似的方法来匹配数字部分。为什么百分比在括号外?为什么是反对票?这不是一个“可接受”的问题吗?如果你只是在测试某个东西的存在,你不需要+
。一个字符的匹配就足够了。@Barmar-我试过放在括号内,但似乎不起作用。你还没有解释你想要什么,因为这应该可以解决它。谢谢!!!你的帖子很有帮助,但说句公道话,巴尔马的建议也行得通,他比你早了一分钟。谢谢你!当然,你有权标记任何答案,但事实上,我的答案快了5秒:)很抱歉,我没有意识到这一点。我如何看到确切的时间戳?只需将鼠标放在回答下面的“回答…之前”文本上,我现在就看到了…我不知道。以后一定要检查这个谢谢!谢谢-我会尽快接受正确的答案。@anubhava不,这就是为什么我建议用另一个问题的答案替换[\d.]
,因为它应该是无效的。