0

我有以下正则表达式:

var regex = /^(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g;

function test() {
    alert(regex.test(document.getElementById("myinput").value));
}

我想允许 url 或空字符串。 请正则表达式解决方案
在这种情况下如何允许为空?
https://jsfiddle.net/6kptovwc/2/
谢谢

4

3 回答 3

0
^$|pattern
var regex = /^$|(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g;
于 2020-03-23T16:05:44.003 回答
0

添加一个空字符串的替代(我已经简化了你的正则表达式):

^((?:https?:\/\/)?(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b[-a-zA-Z0-9@:%_\+.~#?&\/=]*|)$

或者

^((?:https?:\/\/)?(?:www\.)?[-\w@:%.+~#=]{2,256}\.[a-z]{2,6}\b[-\w@:%+.~#?&\/=]*|)$

演示和解释

于 2020-03-23T16:08:23.007 回答
0

只需添加 OR(||) 条件

function test() {
    const elm = document.getElementById("myinput")
    alert(elm.value === '' || regex.test(elm.value));
}
于 2020-03-23T13:43:09.780 回答