textarea输入的JavaScript正则表达式

时间:2016-08-29 10:42:18

标签: javascript regex

我正在尝试从textarea字段中的Apache日志文件输入中提取所有IP地址。我正在使用正则表达式来提取IP地址。我想看到屏幕上打印的所有IP地址。 我无法理解我做错了什么。请帮助

<!DOCTYPE html>
<html lang="en">
<head>

<meta charset="UTF-8">
<title>RegEx_example</title>
</head>
<body style = "background-color: lightgrey">
<center>
<h3><u>Log Miner</u></h3>
<br /><hr />
<h5>Paste your Apache log file in the box below and click on Mine!</h5>

<textarea  rows="25" cols="200" form="mine_log" id = "logs">

</textarea>

<form id = "mine_log" method = "" onsubmit="parseLogs(document.getElementById('logs').value)">
    <input type = "submit" value = "Mine!!" />
</form>
<script language="JavaScript" type="text/javascript">
    function parseLogs(text) {
        var re = new RegExp("^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$");
        var myArray = re.exec("text");
        document.write(myArray.toString());

    }
</script>
</center>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

我在代码中看到了拼写错误。

var myArray = re.exec("text");您只是在字符串上运行正则表达式 text

应该是

var myArray = re.exec(text);变量上运行正则表达式 text

答案 1 :(得分:1)

你需要:

  • 使用正则表达式文字来避免双重反斜杠转义速记类(目前,"\."转换为.
  • 从图案中移除锚点(即^$
  • 将全局修饰符添加到正则表达式(/g
  • 在正则表达式中使用String#match()(如果您不需要捕获组捕获的值,否则,您需要在循环内运行RegExp#exec来收集它们。)

&#13;
&#13;
function parseLogs(text) {
   var re = /([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})/g;
   var myArray = text.match(re);
   document.write("<pre>"+JSON.stringify(myArray, 0, 4) + "</pre>");
}
&#13;
<h5>Paste your Apache log file in the box below and click on Mine!</h5>

<textarea  rows="5" cols="200" form="mine_log" id = "logs">
12.34.56.76
 45.45.34.24
</textarea>
<form id = "mine_log" method = "" onsubmit="parseLogs(document.getElementById('logs').value)">
    <input type = "submit" value = "Mine!!" />
</form>
&#13;
&#13;
&#13;

请注意,如果您不需要捕获的值,甚至可以从模式中删除()