我的第一个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空字符串非常重要,因为我希望匹配失败并且匹配返回一个空字符串。
答案 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);