【问题标题】:Does regex match length need to be checked to determine if at least one match?是否需要检查正则表达式匹配长度以确定是否至少匹配一个?
【发布时间】:2013-10-26 14:59:38
【问题描述】:

如果我只关心是否至少有一个匹配项,是否有任何理由检查返回数组的长度,或者只是检查返回值是否为 null 不够?

javascript 正则表达式匹配

var str = "The rain in SPAIN stays mainly in the plain";
var n = str.match(/ain/g);
if(n && n.length > 0) {alert('at least one match');
// Or
if(n) {alert('at least one match');

【问题讨论】:

  • 一点实验会告诉你很多。
  • @Jeffman。在我的浏览器上,我不需要检查长度,但这并不意味着没有多少浏览器会有不同的行为。

标签: javascript regex match


【解决方案1】:

为了回答你的问题,docs中提到了

带有g标志,如果没有匹配,该方法返回null

所以,不需要检查长度


您可以改用search,它接受正则表达式作为参数并返回位置

if(str.search(/ain/)==-1);//not found
else ;//found

你也可以使用test

if(regexp.test(input))

【讨论】:

  • 谢谢,我会调查search()test(),但这并不能真正回答问题。
【解决方案2】:

如果找不到匹配项,则返回 null (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match) 所以,

if(n) {alert('at least one match');

足够了。

你可以实际测试一下,

var str = "The rain in SPAIN stays mainly in the plain";
var n = str.match(/ainyyyy/g);
if(n) {console.log('at least one match')}else{console.log('not found');};

在这个例子中 not found 将被打印出来。

【讨论】:

猜你喜欢
  • 2012-12-16
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
相关资源
最近更新 更多