传递给正则表达式的值应具有指定的字符

时间:2011-03-28 07:40:35

标签: regex

我正在尝试创建验证,因此传递的值应该是我期望的格式。

例如,值可以是40%40GB

我正在尝试使用正则表达式

(\\d*\\.?\\d*)([MB|GB|TB|PB|%]?)

上面的正则表达式是否正确?

2 个答案:

答案 0 :(得分:1)

不,这是错的。

  1. 字符类[xyz]用于匹配单个字符。事实上,[MB|GB|TB|PB|%]表示匹配单个字符,该字符是MB|GT,{{1}之一}或P。分组应该使用%而不是(?:...)

    [...]

    当然最好收集字节的前缀。另外,我认为该单位是强制性的,因此应删除((?:MB|GB|TB|PB|%)?)

    ?
  2. 正则表达式匹配一个空的子字符串,所以任何东西都会通过,例如使用

    ([MGTP]B|%)
    

    代替。

  3. 合:

    \d+(?:\.\d+)?
    

答案 1 :(得分:1)

试试这个

^\d*([MGTP]B|%)$

DEMO