Javascript 我的正则表达式有什么问题,为什么?
以下正则表达式:Javascript 我的正则表达式有什么问题,为什么?,javascript,regex,Javascript,Regex,以下正则表达式: var number = /^(\+|\-|)(\d+\.|\.\d+|\d+|\d+.\d+)((e\+|e\-|e)\d+)?$/i; 错误地接受不是真实JavasScript数字的1+1和1f5 我正在尝试制作一个正则表达式“只匹配JavaScript样式的数字。它必须支持数字前面的可选加号或减号、小数点和指数符号-5e-3或1E10-同样,在指数前面有可选符号。还要注意的是,点的前面或后面不必有数字,但数字不能是单独的点。也就是说,.5和5。是有效的JavaScrip
var number = /^(\+|\-|)(\d+\.|\.\d+|\d+|\d+.\d+)((e\+|e\-|e)\d+)?$/i;
错误地接受不是真实JavasScript数字的1+1
和1f5
我正在尝试制作一个正则表达式“只匹配JavaScript样式的数字。它必须支持数字前面的可选加号或减号、小数点和指数符号-5e-3或1E10-同样,在指数前面有可选符号。还要注意的是,点的前面或后面不必有数字,但数字不能是单独的点。也就是说,.5和5。是有效的JavaScript数字,但单点不是。”您需要通过
\
转义正则表达式中的
。此外,您还需要通过\
转义正则表达式中的所有+
请参阅演示。您需要通过
\
转义正则表达式中的
。此外,您还需要通过\
转义正则表达式中的所有+
请参阅演示。您将一个
未跳过。确保所有的前面都有反斜杠。您将一个
未跳过。确保所有的前面都有反斜杠。可视化并查看原因:注意\d+。\d+
您并没有用字符类逃避点替换交替;这将有助于您两个都使用字符类简化正则表达式并使其加速(一点)。例如:/^[+-](?:\d+(?:\。\d*)?\124;\。\ d+(:e[+-]?\d+)?$/i
。作为旁注,您不必在字符类之外转义-
。在字符类内部,您只需在符号不在边缘时进行转义。可视化并查看原因:注意\d+。\d+
您没有转义dotReplace替换为字符类;这将有助于简化正则表达式并加快它(一点)例如:/^[+-](?:\d+(?:\.\d*)?\.\d+(:e[+-]?\d+)$/i
。作为旁注,您不必在字符类外部转义-
。在内部,仅当符号不在边缘时才需要转义。