RegExp(在Javascript中)管道之后的最小长度和最小长度(如果存在管道)

时间:2013-07-15 00:14:33

标签: javascript regex

我正在尝试编写一个需要至少4个字符的正则表达式,如果用管道分隔,则每个管道后至少存在4个字符。

例如,这些条目有效:

weather|bronco|flock
weather

然而,这些不会:

red
weather|br||flock|red

我到目前为止几乎可以使用,但它允许用户在输入另一个管道之前只添加1个字母数字:

^((?:(?!([|][|])|^[|]|[|]\\s|[|]$).)*)

4 个答案:

答案 0 :(得分:3)

没有正则表达式会更容易:

'foo|bar||baz'.split('|').every(function(elem) {
    return elem.length >= 4;
});

但如果你坚持使用正则表达式,这应该有效:

/^[^|]{4,}(?:\|[^|]{4,})*$/

答案 1 :(得分:1)

如果你真的需要正则表达式,你可以使用以下

^(\w{4,}\|)+\w{4,}$

DEMO

我假设管道之间需要\w。它可以改为其他符号。 (例如,如果要允许除管道之外的任何东西,可以将其替换为[^|]

没有正则表达式:

valid = true;
for(word in "string|with|pipes".split()) {
    if(word.length < 4) {

        valid = false;
        break;
    }
}

答案 2 :(得分:0)

var array = "weather|br||flock|red".split('|'); //["weather", "br", "", "flock", "red"]
var valid = true;
//now iterate array and check if any item is < 4 length

for(var i=0; i < array.length; i++){
    if(array[i].length < 4 ) valid = false;
}

console.log(valid);

答案 3 :(得分:0)

您可以使用此模式执行此操作:

var regex = /^(?:\w{4,}\|?)+$/

或更多约束:

var regex = /^(?:\w{4,}(?:\|(?!$))?)+$/