Javascript 使用正则表达式为以哈希标记开头的字符串返回true

Javascript 使用正则表达式为以哈希标记开头的字符串返回true,javascript,regex,Javascript,Regex,我不明白为什么在中,我的^与#hello link不匹配,这是一个以hashtag开头的字符串 这就是我想做的: if ((/^\.\./).test(link)) { alert('link starts with ..'); } else if (!(/#/).test(link)) { alert('does not contain #'); } else if ((/^#/).test(link)) { alert('link begins with a #'); } 另外,我很

我不明白为什么在中,我的
^
#hello link
不匹配,这是一个以hashtag开头的字符串

这就是我想做的:

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

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

function start_with_hash(str){
  return str[0]=='#';
}
Regex.test(str)
返回一个布尔值,指示是否存在匹配项。如果您只关心匹配是否存在,那么这是最简单的检查


String.match(regex)
返回匹配的文本,如果没有匹配,则返回null。如果您需要知道匹配的实际内容,则此选项更有用。(编辑以反映Oriol的更正。)

添加多行标志(
/m
)?对于测试样本,必须使用多行选项。否则,
^
表示字符串的开头。如果您正在测试JS,并且哈希标记可以位于字符串中的任何位置,无论是在开头还是换行之后,请确保设置
/^#/m
是否意味着在页面右上角的“标志”菜单下有一个多行选项?也是
字符串。match
将返回一个数组,而
Regexp.test
将返回一个布尔值,在大多数情况下,这可能足够了,不需要进一步测试,而且速度也不那么慢。为了更好的选择,您可以使用
String.search
返回查找的索引,如果没有,则使用
-1
String.match(regex)
返回
null
如果没有匹配,而不是
-1
。哎呀,我想到的是String.search(regex)。我会改正的。