您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Javascript正则表达式返回true ..然后是false ..然后是true ..等等

Javascript正则表达式返回true ..然后是false ..然后是true ..等等

/^^-_[^-_]$/gi;

您正在使用g(全局)RegExp。在JavaScript中,全局正则表达式处于状态:您第一次调用它们(使用exectest等等),您将在给定字符串中获得第一个匹配项。再次调用它们,您将得到下一个匹配项,依此类推,直到没有匹配项,它将重置为下一个字符串的开头。您也可以写regex.lastIndex= 0以重置此状态。

(这当然是绝对糟糕的设计,保证会造成混乱并引起奇怪的错误。欢迎使用JavaScript!)

可以省略g从你的RegExp,因为你只测试了一场比赛。

另外,我认为您不需要[^-_]正面和背面。那将允许在每个末端的 任何 字符,即。*plop!将是有效的。您可能正在考虑超前/向后断言,但是它们在JavaScript中不可用。(嗯,应该是超前的,但是在IE中是坏的。)建议:

/^[a-z0-9][a-z0-9_-]{2,18}[a-z0-9]$/i
javascript 2022/1/1 18:21:51 有281人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶