我正在尝试捕获以下html文本区域的中间行:
function RunClean()
{
var input = document.getElementById('input').value;
var input = input.replace(/(\r\n|\n|\r)/gm,"");
var input = input.replace(/\s\s+/g, ' ');
var string = input.match("In the Matter of(.|\n)*Respondent");
var parties = string.slice(16, -10);
alert(parties);
}
<form>
<textarea id="input" rows="4" cols="50">
In the Matter of
Name I. Want,
Respondent.
</textarea>
<button onclick="RunClean()">Clean</button>
</form>
出于某种原因,这不会起作用。它什么都不返回。出了什么问题,我怎么能通过使用正则表达式非捕获组来实现这个结果?
答案 0 :(得分:1)
您的代码对于这样简单的任务来说太复杂了
function RunClean()
{
alert(document.getElementById('input').value.split('\n')[1].trim());
}
答案 1 :(得分:1)
如果您想匹配换行符(/\n/
),则可能不应删除它们。
出了什么问题[...]?
input.match(...)
不返回字符串。它返回一个字符串数组。/./
)或换行符(/\n/
)),而不是一系列字符。 (*
的重复在组外)[...]如何使用正则表达式非捕获组来实现此结果?
使您现有的群组成为非捕获群体并围绕重复放置捕获群组:
var input = document.getElementById('input').value;
var input = input.replace(/\s\s+/g, ' ');
var matches = input.match(/In the Matter of((?:.|\n)*)Respondent/);
var parties = matches[1];
alert(parties);
function RunClean()
{
var input = document.getElementById('input').value;
var input = input.replace(/\s\s+/g, ' ');
var matches = input.match(/In the Matter of((?:.|\n)*)Respondent/);
var parties = matches[1];
alert(parties);
}
<form>
<textarea id="input" rows="4" cols="50">
In the Matter of
Name I. Want,
Respondent.
</textarea>
<button onclick="RunClean()">Clean</button>
</form>
尽管你删除了所有空格,但根本不需要内部的非捕获组:
var input = document.getElementById('input').value;
var input = input.replace(/(\r\n|\n|\r)/gm,"");
var input = input.replace(/\s\s+/g, ' ');
var matches = input.match("In the Matter of(.*)Respondent");
var parties = matches[1];
alert(parties);
function RunClean()
{
var input = document.getElementById('input').value;
var input = input.replace(/(\r\n|\n|\r)/gm,"");
var input = input.replace(/\s\s+/g, ' ');
var matches = input.match("In the Matter of(.*)Respondent");
var parties = matches[1];
alert(parties);
}
<form>
<textarea id="input" rows="4" cols="50">
In the Matter of
Name I. Want,
Respondent.
</textarea>
<button onclick="RunClean()">Clean</button>
</form>