以javascript错误开头

时间:2009-09-11 07:29:31

标签: javascript regex

我在Javascript中使用startswith正则表达式

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

但如果输入, ] [ \ /之类的字符,Javascript会抛出异常。 有什么想法吗?

4 个答案:

答案 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"));