我在Javascript中使用startswith
正则表达式
if ((words).match("^" + string))
但如果输入, ] [ \ /
之类的字符,Javascript会抛出异常。
有什么想法吗?
答案 0 :(得分:9)
如果您使用正则表达式进行匹配,则必须确保将有效Regular Expression传递给匹配()。检查list of special characters以确保您没有传递无效的正则表达式。应始终转义以下字符(在其前面放置\):[\ ^ $。|?* +()
更好的解决方案是使用这样的substr():
if( str === words.substr( 0, str.length ) ) {
// match
}
或使用indexOf的解决方案是一个(看起来更清洁):
if( 0 === words.indexOf( str ) ) {
// match
}
接下来你可以将一个startsWith()方法添加到包含以上两个解决方案中的任何一个的字符串原型中,以使用法更具可读性:
String.prototype.startsWith = function(str) {
return ( str === this.substr( 0, str.length ) );
}
当添加到原型中时,您可以像这样使用它:
words.startsWith( "word" );
答案 1 :(得分:2)
还可以使用indexOf来确定字符串是否以固定值开头:
str.indexOf(prefix) === 0
答案 2 :(得分:1)
如果要检查字符串是否以固定值开头,您还可以使用substr
:
words.substr(0, string.length) === string
答案 3 :(得分:1)
如果你真的想使用正则表达式,你必须转义字符串中的特殊字符。 PHP有它的功能,但我不知道任何JavaScript。尝试使用我在[Snipplr] [1]
中找到的以下功能function escapeRegEx(str)
{
var specials = new RegExp("[.*+?|()\\[\\]{}\\\\]", "g"); // .*+?|()[]{}\
return str.replace(specials, "\\$&");
}
并用作
var mystring="Some text";
mystring=escapeRegEx(mystring);
如果您只需要找到以另一个字符串开头的字符串,请尝试按照
String.prototype.startsWith=function(string) {
return this.indexOf(string) === 0;
}
并用作
var mystring="Some text";
alert(mystring.startsWith("Some"));