【问题标题】:javascript regex for ip address with asterisk masking带有星号屏蔽的 ip 地址的 javascript 正则表达式
【发布时间】:2019-06-03 02:37:11
【问题描述】:

我想用星号 (*) 为 IP 地址创建一个正则表达式 与以下内容匹配:

数字 127.0 可以是 0 到 255 之间的任何数字。

**[TRUE]**
127.*.*.*
127.0.*.*
127.0.0.*

**[FALSE]**
127.*.*.1
127.*.0.1
127.0.*.1

到目前为止,我所做的是……当然,没有成功。 我完全迷路了..

_regex = function(value) {
    var _match = /^(?:(\d|1\d\d|2[0-4]\d|25[0-5]))\.(?:(\*|\d|1\d\d|2[0-4]\d|25[0-5]))\.(\*|(?:\d{1,2}(?:.\d{1,3}?)))\.(\*|(?:\d{1,3}(?:\*?)))$
    if(_match.test(value)){
        //do something;
    }
}

如果你给我任何机会学习这个,将不胜感激。 谢谢。

【问题讨论】:

  • var re = (? 正则表达式文字需要分隔符。
  • if(re.match(re)){ 错了,用这个 if(value.match(re)){
  • @CertainPerformance @ÁlvaroTouzón 对不起,我的错误。我没有抄我的剧本,急着写这个,所以犯了很多错误..

标签: javascript regex ip-address


【解决方案1】:

我认为您正在寻找的是负面展望,以确保没有数字跟随星号。

像这样:(\*(?!.*\d))

工作示例:

var ips = [
  '127.*.*.*',
  '127.0.*.*',
  '127.0.0.*',
  '127.*.*.1',
  '127.*.0.1',
  '127.0.*.1'
];

var regex = /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|(\*(?!.*\d)))(\.|$)){4}$/;

for(var i = 0; i < ips.length; i++){
  console.log(ips[i] + ': ' + regex.test(ips[i]));
}

【讨论】:

    猜你喜欢
    • 2014-08-27
    • 2022-07-27
    • 2021-10-26
    • 2011-06-20
    • 1970-01-01
    • 2014-03-15
    相关资源
    最近更新 更多