对于使用正则表达式以#标签开头的字符串,返回true

时间:2015-07-14 00:45:49

标签: javascript regex

我很困惑为什么在http://regexr.com/3bcns中,我的^#不匹配#hello-link,这是一个以主题标签开头的字符串。

这就是我想要做的事情:

if ((/^\.\./).test(link)) { 
alert('link starts with ..');
} else if (!(/#/).test(link)) {
alert('does not contain #');
} else if ((/^#/).test(link))  { 
alert('link begins with a #');
}

另外,我很好奇:在javascript中使用正则表达式时,有没有理由让人们更喜欢使用.test而不是.match

2 个答案:

答案 0 :(得分:1)

为什么不检查字符串的第一个字符?

function start_with_hash(str){
  return str[0]=='#';
}

答案 1 :(得分:1)

Regex.test(str)返回一个布尔值,告知是否存在匹配。如果你唯一关心的是匹配是否存在,这是最直接的检查。

String.match(regex)返回匹配的文本,如果没有匹配则返回null。如果您需要知道匹配实际是什么,这将更有用。 (编辑反映了Oriol的修正。)