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