首页 新闻 会员 周边

js正则表达式

0
悬赏园豆:10 [已解决问题] 解决于 2018-03-29 14:33

如何通过正则取到 K65~K66(test) 中的 K66和test,其他能取到的方法亦可.

NullRookie的主页 NullRookie | 初学一级 | 园豆:44
提问于:2018-03-29 11:05

其实没太看懂,你能给出一个实例和具体你期望获得的值吗?

BUTTERAPPLE 6年前

@BUTTERAPPLE: 例子:K65~K66(test);期望获得的值:①K66,②test

NullRookie 6年前
< >
分享
最佳答案
0

我的方法是:

\~.*\(  得到 ~K66( 再截取出K66,首尾去掉就行

\(.*\)   得到 (test) 截取出test

我的问题是,你的字符串实例只有K65~K66(test)一个吗,别的字符串实例也是这样的格式xxxx~xxxx(xxxx) 吗??

收获园豆:10
Shendu.CC | 老鸟四级 |园豆:2138 | 2018-03-29 11:24

类似例子格式基本一致 xxx~yyy(zzz),取出yyy与zzz

NullRookie | 园豆:44 (初学一级) | 2018-03-29 11:48

@NullRookie: 那我觉得完全不用正则表达式也可以啊,用字符串截取就行了。不过我上面的方法也能适用,你可以先去试试。

这是字符串截取,手打的js,没有验证过

var str = "XXX~XXX(XXX)"

int len =str.lenght;
var res1="";var res2="";int tag=2;
for(int i=len-2;i>=0;i--)
{
     if(a[i]!='('&&tag==2)
       res2+=str[i];
     if(a[i]!='~'&&tag==1)
       res1+=str[i]
     if(a[i]=='(')
       tag=1;
     if(a[i]=='~')
       break;
         
}

alert(res1);
alert(res2);

 

Shendu.CC | 园豆:2138 (老鸟四级) | 2018-03-29 11:52
其他回答(1)
0
var str = "K65~K66(test)";

var regexPattern = /(K66)[(](.*)[)]/gm

var match = regexPattern.exec(str);

console.log(match[1]+"\n"+match[2])

完美获取你要的匹配。
结果为:

//Result
"K66
test"
BUTTERAPPLE | 园豆:3190 (老鸟四级) | 2018-03-29 11:36

这样k66就写死了么?我需要xxx~yyy(zzz),取出yyy与zzz通用方法

支持(0) 反对(0) NullRookie | 园豆:44 (初学一级) | 2018-03-29 11:51

@NullRookie: 所以我刚才问你,你就给我一个这个实例!!

支持(0) 反对(0) BUTTERAPPLE | 园豆:3190 (老鸟四级) | 2018-03-29 11:56

@NullRookie: 稍微修改一下就可以了

var str2 = "K1243124~K325123525(klasjfksdjfkls)"

var regexPattern = /[~](.*)[(](.*)[)]/gm

var match1 = regexPattern.exec(str2);

console.log(match1[1]+"\n"+match1[2]);

支持(0) 反对(0) BUTTERAPPLE | 园豆:3190 (老鸟四级) | 2018-03-29 12:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册