我正在尝试编写一个至少需要 4 个字符的正则表达式,并且如果用管道分隔,则每个管道之后至少存在 4 个字符。
例如,这些条目将是有效的:
weather|bronco|flock
weather
然而,这些不会:
red
weather|br||flock|red
到目前为止,我几乎可以使用,除了它允许用户在进入另一个管道之前只添加 1 个字母数字:
^((?:(?!([|][|])|^[|]|[|]\\s|[|]$).)*)
我正在尝试编写一个至少需要 4 个字符的正则表达式,并且如果用管道分隔,则每个管道之后至少存在 4 个字符。
例如,这些条目将是有效的:
weather|bronco|flock
weather
然而,这些不会:
red
weather|br||flock|red
到目前为止,我几乎可以使用,除了它允许用户在进入另一个管道之前只添加 1 个字母数字:
^((?:(?!([|][|])|^[|]|[|]\\s|[|]$).)*)
没有正则表达式更容易:
'foo|bar||baz'.split('|').every(function(elem) {
return elem.length >= 4;
});
但是,如果您坚持使用正则表达式,则应该可以:
/^[^|]{4,}(?:\|[^|]{4,})*$/
如果你真的需要正则表达式,你可以使用以下
^(\w{4,}\|)+\w{4,}$
我假设你需要\w
在管道之间。它可以更改为其他符号。[^|]
(例如,如果您想允许除管道之外的任何内容,您可以将其替换为)。
没有正则表达式:
valid = true;
for(word in "string|with|pipes".split()) {
if(word.length < 4) {
valid = false;
break;
}
}
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);
你可以用这个模式做到这一点:
var regex = /^(?:\w{4,}\|?)+$/
或有更多约束:
var regex = /^(?:\w{4,}(?:\|(?!$))?)+$/