如何在JavaScript中编写此正则表达式?

时间:2012-03-11 11:09:06

标签: javascript regex

我想从字符串中提取数据,但我不知道如何使用正则表达式。
字符串是:

validate[required,maxSize[255],....]

'....'表示它可能是另一个数字和字母。 那么我应该使用什么样的正则表达式来提取255值? (maxsize值)。

1 个答案:

答案 0 :(得分:0)

根据字符串的不同,您可能非常懒,只需在/maxSize\[(\d+)\]/

上匹配即可
> /maxSize\[(\d+)\]/.exec('validate[required,maxSize[255],foo]')[1]
'255'

如果你想确保它在validate[...]内,它会变得更加困难,除非你安全地知道它只会发生一次并且里面不会有额外的[..]块:

> /validate\[[^\]]*maxSize\[(\d+)\].*\]/.exec(
    'validate[required,maxSize[255],foo,bar]')[1]
'255'

如果上面提到的限制是不可接受的,你就不能用正则表达式来做 - 它们的功能不足以匹配正确嵌套的括号之类的东西。如果您尝试解析完整的验证规则,请考虑使用正确的解析器。在这种情况下,我首先通过搜索validate[...]提取validate[部分,然后在计算[]次出现时将一个字符串另一个字符进行处理以查看第一个字符关闭。然后我使用,作为分隔符在这些括号之间拆分字符串,然后使用我已经拥有的解析器或正则表达式来提取长度。因为你几乎可以重复使用那个解析器,我会选择那个;它甚至可以为整个验证规则(甚至是具有多个参数的规则)提供一个结构良好的对象,而不仅仅是一堆字符串/整数。