startswith在JavaScript错误

startswith在JavaScript错误

问题描述:

我使用startswith REG EXP在Javascriptstartswith在JavaScript错误

if ((words).match("^" + string)) 

但如果我输入字符,如, ] [ \ /,使用Javascript抛出异常。 有什么想法?

+0

什么例外? – Gumbo 2009-09-11 07:32:25

如果您使用正则表达式匹配,你必须确保你传递一个有效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"); 
+3

不要使用'indexOf'。它搜索整个字符串,而不仅仅是开始。 – Gumbo 2009-09-11 08:06:07

+0

@Gumbo:你说得对,substr()看起来像是一个更好的解决方案。 – Huppie 2009-09-11 08:51:26

+1

@Huppie:'indexOf(prefix)=== 0'应该可以工作,并且不需要提取子字符串。 – 2009-09-11 16:21:45

如果你想检查一个字符串固定值开始,你也可以使用substr

words.substr(0, string.length) === string 

也可以使用indexOf来确定字符串是否以固定值开始:

str.indexOf(prefix) === 0 
+1

+1。 indexOf()=== 0'对我来说比使用子字符串更有意义。 – 2009-09-11 16:19:09

如果你真的w蚂蚁使用正则表达式你必须在字符串中转义特殊字符。 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; 
} 

and use

var mystring="Some text"; 
alert(mystring.startsWith("Some"));