我很困惑为什么在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
?
答案 0 :(得分:1)
为什么不检查字符串的第一个字符?
function start_with_hash(str){
return str[0]=='#';
}
答案 1 :(得分:1)
Regex.test(str)
返回一个布尔值,告知是否存在匹配。如果你唯一关心的是匹配是否存在,这是最直接的检查。
String.match(regex)
返回匹配的文本,如果没有匹配则返回null。如果您需要知道匹配实际是什么,这将更有用。 (编辑反映了Oriol的修正。)