- 主题:弱问一个Javascript里正则表达式的问题
我用
if(document.getElementById("lineCompCbx1").checked)
{igcase="i";}
else
{igcase="";}
……
if (RegExp(ss1[i],igcase).test(s2))
来做一个循环,ss1是一个数组,轮流拿去检查s2中是否包含。
测试的时候发现,如果ss1[i]的内容里包含小括号“(”或“)”时就报错“Syntax error”。
急求原因及对策。
--
FROM 134.134.139.*
正则表达式不合法呗。
try catch或者window.onerror
【 在 cowell (紫禁飞狐) 的大作中提到: 】
: 我用
: if(document.getElementById("lineCompCbx1").checked)
: {igcase="i";}
: ...................
--
FROM 218.197.83.*
我知道它报错说语法不对,问题出在如果变量的内容里含有小括号,这个括号在正则表达式运行时被用作与RegExp的括号匹配了,造成错误。
我的问题是:如何解决这个问题?
【 在 ottffsse 的大作中提到: 】
: 正则表达式不合法呗。
: try catch或者window.onerror
:
--
FROM 134.134.139.*
把里面的括号换成\(, \)
但是还会有其他的字符需要转义,比如.*^$+[]
【 在 cowell (紫禁飞狐) 的大作中提到: 】
: 我知道它报错说语法不对,问题出在如果变量的内容里含有小括号,这个括号在正则表达式运行时被用作与RegExp的括号匹配了,造成错误。
: 我的问题是:如何解决这个问题?
--
FROM 64.104.125.*
谢谢。但是,数组里的内容和s1内容都是从文本框提取的,我没法改。
我做的功能就是在文本框2里找有没有文本框1中的内容,呵呵。
继续观望求助。
【 在 liangqing 的大作中提到: 】
: 把里面的括号换成\(, \)
: 但是还会有其他的字符需要转义,比如.*^$+[]
:
--
FROM 134.134.139.*
你可以用新的变量存储replace后的值啊。。。
如果只是包含的话,直接 文本框2.indexOf(文本框1)>=0 就可以了
【 在 cowell (紫禁飞狐) 的大作中提到: 】
: 谢谢。但是,数组里的内容和s1内容都是从文本框提取的,我没法改。
: 我做的功能就是在文本框2里找有没有文本框1中的内容,呵呵。
: 继续观望求助。
: ...................
--
FROM 64.104.125.*
: 你可以用新的变量存储replace后的值啊。。。
>> 是说用replace把两个文本框的内容中的小括号给replace成一个特殊记号,然后再做操作?
倒是想过这个办法,嫌麻烦来着。
: 如果只是包含的话,直接 文本框2.indexOf(文本框1)>=0 就可以了
>> 这个办法看起来不错。:)
【 在 liangqing 的大作中提到: 】
: 你可以用新的变量存储replace后的值啊。。。
: 如果只是包含的话,直接 文本框2.indexOf(文本框1)>=0 就可以了
--
FROM 134.134.139.*