正则表达式返回null vs返回空字符串

时间:2014-10-27 23:37:41

标签: javascript regex null

我的第一个stackoverflow问题!所以让我知道如果我能够更好地获取这些信息/如果我在搜索中很好地表达我的问题。 :)同时......继续问题!

所以我有一个正则表达式函数:

s = "benisasillyhehehe"; //this would be variable
regex = /benisasilly(.*)/;
console.log(s.match(regex));

我想要做的是记录附加到" benisasilly"如果它存在,并且如果它不存在则记录为null。但最终发生的事情是它记录了一个空字符串。有没有办法将此功能合并到正则表达式函数中,或者我应该在此函数之外检查它?而且,它真的重要吗?我大多只是想这样做,因为我有其他的正则表达式函数,我在同一个系统中使用DO给出null,所以我希望它们都具有相同的输出格式。谢谢太阳! :d

编辑: 让我澄清一点。这是我希望的输出:

[ 'benisasillyhehehe','hehehe', index: 0, input: 'benisasillyhehehe' ]

然后

null

如果它不起作用。

目前,当它不起作用时,我得到:

[ 'benisasilly', '', index: 0, input: 'benisasilly' ]

所以实际上对我而言,null vs空字符串非常重要,因为我希望匹配失败并且匹配返回一个空字符串。

2 个答案:

答案 0 :(得分:1)

这也是我的第一篇文章。

您可以尝试将正则表达式更改为

regex = /benisasilly(.+)/;

*返回空字符串,因为*表示匹配0个或更多字符。 使用+意味着原始字符串应至少附加一个字符。

答案 1 :(得分:1)

因此,当您尝试执行s.match(regex)时,返回的对象是一个包含两个String值的数组。第一个元素是s变量,如果它包含您的regex值。第二个元素是已附加到regex值的文本。如果您的s值根本不包含regex,那么s.match(regex)将返回null。我建议您像这样设置代码吗? - >

s = "benisasillyhehehe";
regex = /benisasilly(.*)/;
var match = s.match(regex);
if(match) console.log(match[1] == "" ? null : match[1]);
else console.log(null);