请问JavaScript的replace是否不能解析复杂的正则?

u.changIp = function(e){        if (e.value = e.value.replace(/((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?

    \\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/,'')) {                return;
            }else {                //其他提示
        }

校验ip地址的是否合法的

代码是这样的,但是无法校验成功,试过new RegExp()创建,貌似还是没有效果,但是我用这种写法来校验只允许输入数字的时候就能生效,校验输入数字的代码: e.value = e.value.replace(/D/g,'');可是把这条正则放到后台上又可以校验成功

 @Pattern(regexp="^$|((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)",message="网关,格式错误")

请问是什么原因?没有报错,是oninput事件绑定的

相关代码

   u.changeNub = function(e){    //这个是校验数字的,能成功
            if (e.value = e.value.replace(/\D/g,'')) {                return;
            }else {
                api.toast({                    msg: '只允许输入数字',                    duration: 2000,                    location: 'bottom'
                });
            }
        }//这是校验ip的,没有效果if (e.value = e.value.replace(/((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))/,''))

你期待的结果是什么?实际看到的错误信息又是什么?


qq_花开花谢_0
浏览 430回答 1
1回答

慕沐林林

js里单斜杠代表对特殊字符转译,而\d本身就是个规则用来匹配数字,\\d代表匹配字符\和英文字母d的组合同理\.代表匹配符号.,双斜杠代表匹配字符\.而你的正则还能简化,最终的正则应该是((?:(25[0-5]|2[0-4]\d|[01]?\d?\d)\.)){3}\2
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Html5