我正在寻找一种只有在字符串中有两个或更多名称才能匹配的模式。
到目前为止,我已经做到了这一点:
/(?:\w{2,}\s){2,}/g;
function test() {
var pattern = /(?:\w{2,}\s){2,}/g;
var pse = ps.children;
var poe = po.children
var c = pse.length;
for (i = 0; i < c; i++) {
poe[i].textContent = ""+pse[i].textContent.match(pattern);
}
}
test();
&#13;
#ps{background-color:#9CFF1C;}
#po{background-color:#AAFFFF;}
&#13;
<div id="ps">
<p>Name</p>
<p>Name Name</p>
<p>Name Name Name</p>
<p>Name Name Name </p>
</div>
<div id="po">
<p></p>
<p></p>
<p></p>
<p></p>
</div>
<div id="op"></div>
&#13;
产生这些结果。看起来这些片段会删除空格,因此我无法提供正确的数据样本,但很容易将其复制到另一个js fidler站点。
但我不想要尾随的空白区域。 如何定义模式以便仅在单词之间匹配空白?或者其他地方的问题是什么?
感谢。
答案 0 :(得分:1)
我可能会误解你,但是这个呢?
// The "^" character marks the start of the string
// The "$" character marks the end
// Wrapping your expression with these prevents leading and trailing whitespace
var regex = /^(\w+ )+\w+$/;
// Accepts:
regex.test('Brian Vaughn');
regex.test('Brian David Vaughn');
// Rejects:
regex.test(' Brian Vaughn');
regex.test('Brian Vaughn ');
regex.test('Brian');