正则表达式在前端使用时需要注意什么?
参考答案
正则适合匹配明确的文本模式,但不适合独自承担复杂语法解析。使用构造函数拼接外部文本时,应正确转义正则元字符,避免用户输入改变匹配语义。
带 g 或 y 标志的正则会更新 lastIndex,多次 test 的结果可能因状态不同而变化。Unicode 模式、码点和字素簇并非一回事,复杂 emoji 或组合字符不能简单按一个字符类视为一个用户感知字符。
包含嵌套重复和大量回溯的模式可能导致主线程长时间阻塞。对不可信输入限制长度、简化模式并使用超时或隔离策略。校验邮箱等复杂格式时,前端应优先提供合理提示,最终判断仍由服务端完成。
可运行示例
JavaScript
const pattern = /a/g;
console.log(pattern.test("a"));
console.log(pattern.test("a"));
console.log(pattern.lastIndex);
输出依次为:true、false、0,带 g 的正则会改变 lastIndex。