为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

qq_花开花谢_0 2019-01-25 15:46:35
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))/,''))你期待的结果是什么?实际看到的错误信息又是什么?
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

js里单斜杠代表对特殊字符转译,而\d本身就是个规则用来匹配数字,\\d代表匹配字符\和英文字母d的组合
同理\.代表匹配符号.,双斜杠代表匹配字符\.

而你的正则还能简化,最终的正则应该是
((?:(25[0-5]|2[0-4]\d|[01]?\d?\d)\.)){3}\2


查看完整回答
反对 回复 2019-01-25
  • 1 回答
  • 0 关注
  • 429 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信