Java 正则表达式部分验证表达式
我目前正在用Java构建web应用程序,而且我对regex还不熟悉。我对验证公式有以下要求: 公式可以包含以下字符集:Java 正则表达式部分验证表达式,java,regex,validation,Java,Regex,Validation,我目前正在用Java构建web应用程序,而且我对regex还不熟悉。我对验证公式有以下要求: 公式可以包含以下字符集: 数字:0-9 α:A-Z 运算符:*,/,+- 分隔符: 条件: 公式必须以“T”开头 字符“T”后面必须始终跟一个数字或字母 分隔符后面必须始终跟有“T” 字符“M”后面必须始终跟有运算符 运算符后面必须始终跟一个数字 我有如下表达式,如下所示: ^(?!.*[*+/-]\D)(?!.*T\W)(?!.*[;:][^T])(?!.*M[^*+/-])[T][A-Z0-
- 数字:0-9
- α:A-Z
- 运算符:*,/,+-
- 分隔符:李>
- 公式必须以“T”开头
- 字符“T”后面必须始终跟一个数字或字母
- 分隔符后面必须始终跟有“T”
- 字符“M”后面必须始终跟有运算符
- 运算符后面必须始终跟一个数字
^(?!.*[*+/-]\D)(?!.*T\W)(?!.*[;:][^T])(?!.*M[^*+/-])[T][A-Z0-9 +/*;:-]*$
以下表达式与上述有效的正则表达式匹配:
T4R*
T4RT
T4;
T4RTM
TA123;T1*2/32米+
但我不知道如何将以下验证添加到上面的正则表达式:
- 运算符后面必须始终跟一个数字
- 字符“T”后面必须始终跟一个数字或字母
- 分隔符后面必须始终跟有“T”
- 字符“M”后面必须始终跟有运算符
T4R*
T4RT
T4;
T4RTM
以下字符不应起作用,因为字符“T”后面必须始终跟一个数字或字母,但在这种情况下它是有效的:
T4R*
T4RT
T4;
T4RTM
下面的一个不应用作分隔符(;)必须始终后跟“T”,但在这种情况下它是有效的:
T4R*
T4RT
T4;
T4RTM
以下字符不应起作用,因为字符“M”后面必须始终跟有运算符,但在这种情况下,它是有效的:
T4R*
T4RT
T4;
T4RTM
你好@vks
将更改应用于reg表达式后,请查找以下结果:
下面的一个不应作为运算符(*、/、+、-)必须始终后跟一个数字
它适用于字符,但不适用于数字,预期为数字:
无效的T4R*H
有效T4R*5
字符“T”后面必须始终跟一个数字或字母:
T4RT按预期无效
T4RT5应该有效,但实际结果无效
T4R应有效,但实际结果无效
分隔符(;)后面必须始终跟有“T”:
T4;T应该有效,但实际结果无效
T4;按预期无效
字符“M”后面必须始终有一个运算符:
T4RTM+应有效,但实际结果无效
T4RTM按预期无效
你知道需要对正则表达式做什么更改才能满足上述条件吗
提前感谢您的帮助将任务分解为若干小部分,并逐一解决 解决方案可能如下所示:
- 检查
/^[0-9A-Z\*\/\+\-\;]*$/
- 检查
(公式必须以“T”开头)/^T.*$/
- 检查
是否不匹配(如果/^.*T(?[0-9A-Z]).$/
后面没有数字或字母,则匹配)T
- 检查
不匹配(如果分隔符后面没有/^.*;(?!T)。*$/
,则它将匹配)T
- 检查
是否不匹配(如果/^.*M(?![\*\/\+\-]).$/
后面没有运算符,则匹配)M
- 检查
是否不匹配(如果运算符后面没有数字,则会匹配)/^.[\*\/\+\-](?!\d)。*$/
- 您可以在这里轻松查看更多信息
正则表达式是正确的。唯一可能失败的方法是在输入后有一个
换行符
^(?!.*[TM*+/;:-]$)(?!.*[*+/-]\D)(?!.*T\W)(?!.*[;:][^T])(?!.*M[^*+/-])[T][A-Z0-9 +/*;:-]*$
见演示
TA123;T1*2/32M+
也无效,因为前面没有数字。请添加一些有效的exmapleshi。感谢根据新版本更新的回复问题expresion@user1999453T4RTM+不能有效,因为运算符后面没有数字。请检查编辑!!!!!!!!!很抱歉我对T4RTM+的错误,它现在工作正常,非常感谢vks。