Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.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 ?:[Ee][+\-]?[0-9]+)(?:-[+\-](?:\b[0-9]+(?:\[0-9]*)?;\b\[0-9]+(?:[Ee][+\-]?[0-9]+)?\]/;_Javascript_Regex - Fatal编程技术网

Javascript ?:[Ee][+\-]?[0-9]+)(?:-[+\-](?:\b[0-9]+(?:\[0-9]*)?;\b\[0-9]+(?:[Ee][+\-]?[0-9]+)?\]/;

Javascript ?:[Ee][+\-]?[0-9]+)(?:-[+\-](?:\b[0-9]+(?:\[0-9]*)?;\b\[0-9]+(?:[Ee][+\-]?[0-9]+)?\]/;,javascript,regex,Javascript,Regex,此解决方案正确匹配以下所有变体: [1-1][+1-+1][-1--1] [1.-1.][+1.-+1.][-1.--1.] [1.1-1.1][+1.1-+1.1][-1.1--1.1] [1E1-1E1][1E+1-1E+1][1E-1-1E-1] [1.E1-1.E1][1.E+1-1.E+1][1.E-1-1.E-1] [1.1E1-1.1E1][1.1E+1-1.1E+1][1.1E-1-1.1E-1] [.1-.1][+.1-+.1][-.1-.1] [.1E1-.1E1][.1E+

此解决方案正确匹配以下所有变体:

[1-1][+1-+1][-1--1]

[1.-1.][+1.-+1.][-1.--1.]

[1.1-1.1][+1.1-+1.1][-1.1--1.1]

[1E1-1E1][1E+1-1E+1][1E-1-1E-1]

[1.E1-1.E1][1.E+1-1.E+1][1.E-1-1.E-1]

[1.1E1-1.1E1][1.1E+1-1.1E+1][1.1E-1-1.1E-1]

[.1-.1][+.1-+.1][-.1-.1]


[.1E1-.1E1][.1E+1-.1E+1][.1E-1-.1E-1]

出于兴趣,这些数字可以是负数吗?例如,
string[123--456]
有效吗?如果是这样的话,
abc[-123]
在第一个例子中是有效的还是在第二个例子中是无效的?谢谢。请您详细解释一下\b和\b好吗。我在网上读到的内容是模糊的,我不太明白。单词边界是字符串中的第一个或最后一个字母?我不理解的另一个细节是?:例如:/(d)。\1/匹配并捕获“abcdadef”中的“dad”,而/(?:.d){2}/匹配但不捕获“cdad”。from似乎不正确,或者我对他们说的话有很大的误解。
\b
是一个单词边界断言,它匹配单词字符和非单词字符之间的位置。在Javascript中,单词字符(可以用
\w
[a-Za-z0-9.]
表示)是一个数字、字母或下划线字符。
\B
是不在单词边界上的位置的断言。正如您已经猜测的,
(…)
是一个捕获括号,
(?:…)
是一个非捕获括号。查看更多正则表达式乐趣!
//get number in [] from string
foo='text[number]'
//get two numbers from [] the numbers are separated by -
bar='string[num1-num2]'
var myregexp = /\[([\-+]?\b\d*\.?\d+\b)(?:\b-([\-+]?\d*\.?\d+\b))?\]/;
var match = myregexp.exec(subject);
if (match != null) {
    num1= match[1];
    num2 = match[2]; //maybe null if you have single number!
} else {
    num1 = num2 = "";
}
//get number in [] from string
foo='text[20938423.20938]'
//get two numbers from [] the numbers are separated by -
bar='string[23.20-23]'
//another test
bar='string[23.20-.9873]'
20938423.20938
23.20
23.20
23
.9873