【问题标题】:How to validate string using regex如何使用正则表达式验证字符串
【发布时间】:2021-02-18 01:53:44
【问题描述】:

我想验证具有以下位置字符约束的 8 个字符的字符串:

  1. first 位置必须是以下字母之一:A/M/P/B/S
  2. Secondthird 位置是从AAZZ 的字母
  3. 第四位包含1 - 4之间的数字
  4. 第五位包含1 - 4之间的数字
  5. 第六 - 第八位必须是数字000 - 999

如果不匹配,它将返回FALSE。这是我的代码:

import re                       

text = input("input:")
print(text)
   check = re.search("[^S|B|M|P|A][AA-ZZ][1-4][1-4][000-999]", text)
if check: 
 print("TRUE")
else: 
 print("FALSE")

例如:AIK22001 Uotput 应该是“真”

在这里,我尝试过使用正则表达式 Python 库,但输出错误。它返回False 是否应该是True

【问题讨论】:

  • 欢迎来到 SO。也许首先尝试在tool like this 上测试和修复您的正则表达式,然后在 python 中实现它。不要忘记在我链接的工具中选择 python regex。
  • 对不起,它怎么能真正打印出来。 'if else if' 语句只会在 'if' 为假且 'elif' 为真时运行 'elif'。如果输入了“if”,那么“elif”和“else”将不会运行。您在“if”语句中定义检查,因此“elif”不可能运行。我相信这只是您的拼写错误,您需要做的就是将检查设为单独的“if”语句。或将其移至“if”语句之前
  • 这样的? ^[AMPBS][A-Z]{2}[1-4]{2}\d{3}$
  • if len(text) == 8,检查未定义。所以它会失败。只有当字符串的长度不等于 8 时,它才会进入并执行 re.search。你想先解决这个问题
  • 你的问题是 if 语句不是正则表达式

标签: python regex if-statement


【解决方案1】:

以下是 Akshay Sehgal 上面提到的如何使用 regex101 网站的示例:

https://regex101.com/r/KtzJY6/1

您会看到^[AMPBS][A-Z]{2}[1-4]{2}[0-9]{3}$ 的正则表达式。此处需要注意的重要功能:

  • 锚点 ^$ 附加到字符串的开头和结尾,这可以防止输入太短和太长的匹配。
  • {2} 这样的量词,意思是“前面的两件事”
  • 注意方括号[] 的工作原理。您不需要| 在它们中间,并且范围仅适用于单个字符; [AA-ZZ] 匹配“A”、“A”和“Z”之间的任何内容以及“Z”,这可能不是你想要的。

【讨论】:

  • 我想你错过了[1-4]
  • 非常感谢,这个很有用,解决了我的问题
猜你喜欢
  • 1970-01-01
  • 2014-12-24
  • 2018-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多