我是Regexs的新手。我想检查一下我的电话号码是否有效。
如果它包含a-z之类的任何内容或+ - 或 - +之类的符号,则无效。例如: -
425.09z无效
+ - 425.09无效
425.09是有效的
我正在使用下面的代码并且混淆了如何在此处设置 OR 条件以检查文本中是否包含+ - 或 - +等符号,因此它将无效。我刚刚在if语句中添加了一个条件[a-z]并且它工作正常
import re
text="+-432.18"
if re.search(r"[a-z]", text):
print("invalid")
else:
print("valid")
输出: 应该是无效的
编辑: +425或-425将是有效数字
答案 0 :(得分:1)
^[0-9]+\.?[0-9]+$
<强>详情
^
断言字符串的开头
[0-9]+
仅查找数字,一个或多个
\.?
十进制,查找0或其中一个
[0-9]+
仅查找数字,一个或多个
$
字符串结尾
答案 1 :(得分:0)
您可以使用|
来匹配不同的内容。
if re.search(r"[a-z]|\+-|-\+", text):
您需要转义+
,因为它在正则表达式中具有特殊含义。
但通常对于输入验证,最好定义好的输入是什么样的,并匹配它,而不是尝试列出所有不允许的内容。例如,这会将123$456
视为有效,因为您不会检查$
。
答案 2 :(得分:0)
我知道你想使用正则表达式,但我认为这不是正确的工具。
我会选择in
支票:
if "+-" in text or "-+" in text:
print("Invalid input")
当然,您可以使用正则表达式执行相同操作,可能更具可扩展性:
>>> regex = re.compile(r"(\+-|-\+)")
>>> regex.search("+-25.2") is None
False
>>> regex.search("+25.2") is None
True
现在,如果您想将该测试与第一个测试(re.search(r"[a-z]", text)
)相结合,您应该连续应用这两个测试:
regex1 = re.compile(r"[a-z]")
regex2 = re.compile(r"(\+-|-\+)")
if regex1.search(text) or regex2.search(text):
print("Invalid input")