Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我的正则表达式有什么问题,为什么?_Javascript_Regex - Fatal编程技术网

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
。作为旁注,您不必在字符类外部转义
-
。在内部,仅当符号不在边缘时才需要转义。