我是新来的正则表达式,我正在验证一个表单。我想用String.prototype.match
过滤出一个不正确的数组响应。其中每个标识符总是与foo-
启动,然后有7位数字javascript中的几个字符后匹配非数字
"foo-1234567"
:输入应该匹配这种形式。如果有多个标识符,则输入格式如下:
"foo-1234567\nfoo-7654321\nfoo-1324536"`
其中标识符由换行符分隔。
我想匹配给我的每个标识符有foo-
,然后7个字符与一个或多个非数字字符。如果输入的是这样的:
"foo-1234567\nfoo-1234A67\nfoo-123$5^7"
我想一个数组从match
这样的:["foo-1234A67", "foo-123$5^7"]
。
的正则表达式我曾尝试:
/^foo-\D+$/gmi //nada
/^foo-(\D){1,7}$/gmi //not even close
/^foo-\d*\D+\d*$/gmi //good but matches > or < 7 characters
/^foo-(?=^foo-\d*\D+\d*$)(?=PR-.{7})/gmi //empty string or null
一如往常,这是代码高尔夫球,所以最短的代码赢。
这正则表达式是错误的,正则表达式不会为OP希望是简单:*“我想匹配给我其中有每个标识符foo-,然后7个字符1个或多个非数字字符。“*。 –
@SpencerWieczorek - 我认为我的编辑涵盖了这个要求,并且没有'.split().filter()',但是我也留下了我的原始答案,以允许输出* all *无效值的情况而不仅仅是与特定格式匹配的无效值。 – nnnnnn
是的,看起来不错。强制它不符合OP的要求7位数字。不幸的是,我发现有点晚了:P –