例如我的数据
AAAG ( 382 TO 385 )( 1729 TO 1732 )( 2405 TO 2408 )( 3759 TO 3762 )
AAAKSKSAL ( 1941 TO 1949 )( 3973 TO 3981 ) AAAKSKSAL
我试过下面的脚本
var xa = "AAAKSKSAL ( 1941 TO 1949 )( 3973 TO 3981 )";
var regex = /([^\dTO\s\(\)]+)/g;
var matches = [];
matches = regex.exec(xa);
alert(matches);
我的字符串只包含一个数据,但会提醒AAAKSKSAL,AAAKSKSAL
。
或者其他
var xa = "AAAKSKSAL ( 1941 TO 1949 )( 3973 TO 3981 ) ( 1941 TO 1949 )( 3973 TO 3981 ) AAAKSKSAL AAAKSKSAL AAAKSKSAL";
它提醒AAAKSKSAL,AAAKSKSAL
。但在前面的示例中,我的输入数据包含四个匹配元素。但结果只有两个。我的正则表达式的错误是什么?
但我在perl中尝试了相同的概念,这样可以正常工作
$s = "AAAKSKSAL( 1941 TO 1949 )( 3973 TO 3981 ) AAAKSKSAL";
@ar = $s=~m/([^\dTO\s\(\)]+)/g;
print @ar
答案 0 :(得分:1)
您的正则表达式没问题,但您错误地使用了表达式 .exec()。而不是:
var matches = [];
matches = regex.exec(xa);
alert(matches);
试试这个:
var matches = [];
while ((m = regex.exec(xa)) !== null) {
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
matches.push(m[0]);
}
alert(matches);
答案 1 :(得分:0)