如何用javascript编写这个正则表达式?
我想从我拥有的字符串中提取数据,但我不知道如何使用regex进行提取。如何用javascript编写这个正则表达式?,javascript,regex,Javascript,Regex,我想从我拥有的字符串中提取数据,但我不知道如何使用regex进行提取。 字符串为: validate[required,maxSize[255],....] “…”意味着它可能是另一个数字和字母。 那么,我应该使用什么正则表达式来提取255值呢?(最大大小值) 根据字符串的不同,您可以非常懒惰,只需匹配/maxSize\[(\d+)\]/ > /maxSize\[(\d+)\]/.exec('validate[required,maxSize[255],foo]')[1] '255'
字符串为:
validate[required,maxSize[255],....]
“…”意味着它可能是另一个数字和字母。
那么,我应该使用什么正则表达式来提取255值呢?(最大大小值) 根据字符串的不同,您可以非常懒惰,只需匹配
/maxSize\[(\d+)\]/
> /maxSize\[(\d+)\]/.exec('validate[required,maxSize[255],foo]')[1]
'255'
如果您想确保它在验证[…]
内部,那么它将变得非常困难,除非您安全地知道它只会发生一次,并且内部不会有额外的[…]
块:
> /validate\[[^\]]*maxSize\[(\d+)\].*\]/.exec(
'validate[required,maxSize[255],foo,bar]')[1]
'255'
如果上面提到的限制不可接受,您就不能用正则表达式来实现,因为正则表达式的功能不足以匹配正确嵌套的括号之类的内容。如果您试图解析完整的验证规则,请考虑使用适当的解析器。在这种情况下,我将首先通过搜索validate[
来提取validate[…]
部分,然后在计数[
和]时逐个进行字符处理
引用以查看第一个关闭的时间。然后,我将使用,
作为分隔符在这些括号之间拆分字符串,然后使用我已有的解析器或正则表达式提取长度。由于您几乎可以重用解析器,我将使用该解析器;它甚至可以为wh提供结构良好的对象ole验证规则(即使是具有多个参数的规则)而不是一堆字符串/整数。maxSize[(\d+)]这一条就足够了