RegEx匹配字符串中的两个或多个名称

时间:2015-04-04 16:12:12

标签: javascript regex

我正在寻找一种只有在字符串中有两个或更多名称才能匹配的模式。

到目前为止,我已经做到了这一点:

/(?:\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;
&#13;
&#13;

产生这些结果。看起来这些片段会删除空格,因此我无法提供正确的数据样本,但很容易将其复制到另一个js fidler站点。

但我不想要尾随的空白区域。 如何定义模式以便仅在单词之间匹配空白?或者其他地方的问题是什么?

感谢。

1 个答案:

答案 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');