我想知道的事情
我想知道如何检测IP地址,然后将其替换为另一个字符串,可能类似于" censored"或者" nah"。
为什么吗
主要是因为我想检查一个IP地址,如果它被检测为一个地址。
答案 0 :(得分:0)
您可以使用 String.prototype.replace()和正则表达式:
replace()方法返回一个新字符串,其中一个或所有匹配的模式由替换替换。模式可以是字符串或RegExp,替换可以是字符串或要为每个匹配调用的函数。
注意:原始字符串将保持不变。
语法 str.replace(regexp | substr,newSubstr | function)
如果你需要更好地理解如何处理replace()方法,你有很多来源,这里有一个:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace
只需按照该教程(或任何类似的)了解如何使用replace(),然后继续阅读。
<强> REGEX 强>
现在你知道如何使用正则表达式在匹配点中创建覆盖的字符串,你需要正确的正则表达式来匹配你的场景。
IP正则表达式的一个很好的起点就是这个简化的:
\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b
它非常简单易用,但即使我们正确处理了IP语法,我们也会匹配0到999之间的任何数字,因此它可以匹配不一致的地址(例如out-范围内的IP,如192.168.1.999,将匹配)。 如果您对正则表达式没有信心,这是一个很好的起点。
更准确,更难以理解的正则表达式如下:
\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b
这解决了以前的问题并且行动得相当好。
以下是您需要的所有内容,请注意,这可以解决许多情况,只需要将正则表达式替换为正确的正则表达式,如果您需要匹配其他内容。
最后但并非最不重要的是,只需记住总是加倍反斜杠,因为您需要在Java代码中正确解析,所以最后一个是
\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b