2015-08-26 76 views
1

我是新来的正则表达式和目前正在建设中Java.I Web应用程序有以下要求来验证公式:正则表达式的表达式验证公式

  1. 公式必须先从“T”
  2. 公式可以包含以下的字符集:
    • 位:0 - 9
    • 阿尔法:A - Z
    • 算:*,/,+, -
    • 分隔符:;
  3. 操作者必须总是后跟数字
  4. 的字符“T”必须总是后跟数字或α。
  5. 分隔符后面必须紧跟“T”。
  6. 字符“M”后面必须跟一个操作符。

我设法建立下面的表达式如下所示:

^[T][A-Z0-9 -- \\+*;]* 

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

  1. 操作员必须总是后面跟着一个数字
  2. 字符“T”后面必须跟一个数字或一个字母。
  3. 分隔符后必须紧跟“T”
  4. 字符“M”后面必须紧跟一个操作符。

有效样本:TA123;T1*2/32M+

无效样本:T+qMg;Y

+3

什么投入将匹配这些条件? – vks

+0

TA123:T + 1 * 2/32M + - 有效 – user1999453

+2

这怎么可能是有效的......在'T'后需要'alpha'或'digit' – vks

回答

0

我们缺少了一点信息,充分了解您想要什么。几个例子会有所帮助。

现在,一个小的正则表达式:
^(T[A-LN-Z0-9]*M[+-/*][0-9];?)*

编辑:

^(T([A-LN-Z0-9]*M?[+\-/*]?[0-9]?)*;?)+

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

: 从我的理解,你正在寻找这应该是接近

这个正则表达式强制该行以T开头,然后有0到多个[A-LN-Z0-9]范围,这意味着所有的alpha和数字除了M.
然后它需要有一个M后跟一个运算符,范围在[+ -/*] *(非常多+, - ,和,除了 - 和/是特殊字符,所以我们告诉正则表达式我们想要这些角色,而不是他们应该具有的含义)
然后它继续一到多个数字,并以“;”结尾。那可能会或可能不会。

,一切都在括号内可从0反复几次

我本来希望的要验证...例如,我们不知道是什么的例子,如果行必须结束与一个 ”;”

根据您的需要,使用字符“;”分割要验证的字符串。并验证每个生成的字符串与该正则表达式可能工作