gpt4 book ai didi

java - 正则表达式部分验证表达式

转载 作者:行者123 更新时间:2023-12-01 06:12:20 24 4
gpt4 key购买 nike

我目前正在使用 Java 构建 Web 应用程序,而且我是正则表达式的新手。我有以下要求来验证公式:

公式可以包含以下字符集:

  • 数字:0 - 9
  • 阿尔法:A - Z
  • 运算符:*、/、+、-
  • 分隔符:;

条件:

  • 公式必须以“T”开头
  • 字符“T”后面必须始终跟有数字或字母。
  • 分隔符后面必须始终跟有“T”。
  • 字符“M”后面必须始终跟有运算符。
  • 运算符后面必须始终跟有数字

我有以下表达式,如下所示:

^(?!.*[*+/-]\D)(?!.*T\W)(?!.*[;:][^T])(?!.*M[^*+/-])[T][A-Z0-9 +/*;:-]*$

以下表达式与上述有效的正则表达式相匹配:

TA123;T1*2/32M+

但我不知道如何将以下验证添加到上面的正则表达式:

  • 运算符后面必须始终跟有数字
  • 字符“T”后面必须始终跟有数字或字母。
  • 分隔符后面必须始终跟有“T”
  • 字符“M”后面必须始终跟有运算符。

上面的正则表达式部分有效上述条件,只有下面的那些应该无效,但它是有效的,这是错误的:

下面的不应用作运算符(*、/、+、-),后面必须始终跟一个数字,但在这种情况下它是有效的:

T4R*

下面的内容不应该起作用,因为字符“T”后面必须始终跟有数字或字母,但在这种情况下它是有效的:

T4RT

下面的内容不应用作分隔符(;),后面必须始终跟有“T”,但在这种情况下它是有效的:

T4;

下面的内容不应该起作用,因为字符“M”后面必须始终跟有一个运算符,但在这种情况下它是有效的:

T4RTM

嗨@vks,

将更改应用到 reg 表达式后,请找到以下结果:

下面的不应用作运算符(*、/、+、-),后面必须始终跟一个数字

它适用于字符,但不适用于数字,并且预期的是数字:

T4R*H 无效

有效 T4R*5

字符“T”后面必须始终跟有数字或字母:

T4RT 如预期无效T4RT5应该有效但实际结果无效T4R应该有效,但实际结果无效

分隔符(;)后面必须始终跟有“T”:

T4;T应该有效,但实际结果无效 T4;正如预期无效

字符“M”后面必须始终跟有运算符:

T4RTM+应该有效,但实际结果无效 正如预期的那样,T4RTM 无效

您知道需要对正则表达式进行哪些更改才能满足上述标准吗?

预先感谢您的帮助

最佳答案

正则表达式是正确的。它可能失败的唯一方法是输入后有一个换行符。要解决这个问题,您可以使用

^(?!.*[TM*+/;:-]$)(?!.*[*+/-]\D)(?!.*T\W)(?!.*[;:][^T])(?!.*M[^*+/-])[T][A-Z0-9 +/*;:-]*$

查看演示。

https://regex101.com/r/sS2dM8/51

关于java - 正则表达式部分验证表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32735883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com