如何提取以#
开头且以.nr
结尾的多个句子。
在这个例子中,只有2个句子符合我的要求。
<textarea id="input" style="width:100%;height:350px;">
name: John Smith
tel. 02222222222.nr <!-- discard --->
#name: Maria White
tel. 03333333333 <!-- discard --->
#name: Bryan Red
tel. 04444444444.nr <!-- My Requirements: MATCH --->
#name: Sarah Brown
tel. <!-- discard --->
#name: George White
tel. 01111111111 <!-- discard --->
name:
tel. 03333333333.nr <!-- discard --->
#name: Kelly Preston
tel. 03333333333.nr <!-- My Requirements: MATCH --->
</textarea>
<p id="output"></p>
<script language="javascript">
var str = document.getElementById("input").value;
var output = str.match(/[#][^\.]*[.nr]+/g);
document.getElementById("output").innerHTML = output;
</script>
提前致谢
答案 0 :(得分:2)
您可以使用以下正则表达式:
/^#.*\n.*\.nr$/gm
在regex101上查看此操作。
它匹配行开头的#
,然后是换行符,然后是换行符,然后是行尾的任何字符,包括.nr
。它依赖于g
lobal标志来匹配您的字符串中的多个结果,以及m
ultiline标记,以便^
和$
分别匹配每个字符串的开头和结尾行而不是字符串的开头和结尾。
答案 1 :(得分:1)
/#.*\n.*\.nr/g
:
# : literal '#'
.* : a sequence of one or more characters (by default \n is not allowed)
\n : a new line
.* : ...
\.nr : literal ".nr"
var text = document.getElementById("input").value;
var matches = text.match(/#.*\n.*\.nr/g);
console.log(matches);
<textarea id="input" style="width:100%;height:350px;">
name: John Smith
tel. 02222222222.nr
#name: Maria White
tel. 03333333333
#name: Bryan Red
tel. 04444444444.nr
#name: Sarah Brown
tel.
#name: George White
tel. 01111111111
name:
tel. 03333333333.nr
#name: Kelly Preston
tel. 03333333333.nr
</textarea>