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)。我会改正的。