【问题标题】:How to write regexp which will validate the following strings?如何编写将验证以下字符串的正则表达式?
【发布时间】:2020-05-11 12:30:23
【问题描述】:

我尝试在 cpp ^((T[X-Z]|R[X-Z])+?)(?:,\\s*|$) 中遵循正则表达式。它仅验证 TX。如果空字符串应该是无效的,它也不应该接受数字

用户可以输入:

  1. TX
  2. 德克萨斯州,TY
  3. TX、TY、TZ、
  4. RX、RY、RZ
  5. 接收

它应该在所有情况下都有效。

【问题讨论】:

  • “不起作用”是什么意思?什么输入会发生什么,您期望会发生什么?您也可以edit您的问题并将您的代码提供为minimal reproducible example吗?见How to Ask
  • ^((T[X-Z]|R[X-Z])+?)(?:,\\s*|$),这个正则表达式只接受TX,没有别的

标签: c++ qt qcombobox qregexp qvalidator


【解决方案1】:

对于您放在这里的测试用例,([TR][XYZ])(,( )?)? 可能有效。

我已经为你测试了here(提到globalmultiline 标志已启用)

【讨论】:

  • 一个空字符串应该是无效的,有什么建议吗?
  • ? 表示它可以枯萎出现一次或不出现一次。如果您决定希望它只出现一次,只需删除 ? 如果您希望它是 1 次或多次,请将 ? 更改为 + 无论如何,我真的建议您使用如下工具:@987654322 @ 你可以在那里测试你的正则表达式。
  • (T[X-Z]|R[X-z]+?)(?:,\s*|) 这个正则表达式有效,但它接受一个数字,然后它显示它无效,但我没有不想接受数字
  • @nehamundokar 它不捕获空格,因此要检查an empty string should be invalid,请在您的程序中检查它。 (无论是null 还是empty 等...)我还应该提到,您想要的real 表达式在第1 组中被捕获(阅读正则表达式中的捕获组)
猜你喜欢
  • 2018-10-10
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多