【问题标题】:JavaScript IP regexpJavaScript IP 正则表达式
【发布时间】:2011-09-25 21:37:30
【问题描述】:

我需要一个将 IP 地址更改为 rexexp 的 JavaScript 代码,
即:123.123.123.123^123\.123\.123\.123$ 和网络掩码的相同操作。
有人有想法吗?

【问题讨论】:

  • 我认为你需要更好地解释你想要做什么。
  • 为什么要这样的正则表达式?字符串比较会更简单、更有效。
  • 看起来你可以写像ip = '^' + ip + '$'这样的东西。但是然后呢?
  • 就像str.replace(/\./g, "\\.")一样简单

标签: javascript regex ip netmask


【解决方案1】:

好吧,只是在黑暗中开枪:

var ipaddr = '123.123.123.123',
    myRegEx = new RegExp('^' + ipaddr + '$');

这将生成一个带有字符串'^123.123.123.123$'RegExp object,并且可以像这样使用

myRegEx.exec( someStringVariable ); // returns an array of matches

当您需要使用变量构建“代码内”正则表达式时,这会非常有用。如果您只想进行字符串比较,则应使用等价运算符===== 或使用.indexOf() 方法。

参考:RegExp()


更新

要替换字符串中的句点,只需使用.replace() 方法。

var ipaddr = '123.123.123.123';

ipaddr = '^' + ipaddr.replace( /\./g, '\\.' ) + '$';

【讨论】:

  • 理论上句号应该被转义,但是是的,根据问题的情况是可以的:)
  • @Karolis:好点,完全监督。当然,这些时期需要在现实世界的场景中逃脱。
【解决方案2】:

我同意昆汀的观点。改用 indexOf:

if (searchString.indexOf("123.123.123.123", 0) != -1) {
    alert("Yo");
}

也许你需要更好地解释这个问题。

【讨论】:

  • 好吧,关键是当我输入一些 IP 地址时,我希望脚本将其更改为正则表达式
猜你喜欢
  • 2014-07-03
  • 2012-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
相关资源
最近更新 更多