猿问

如何使用正则表达式在Javascript中解析某种格式的字符串?

我有一些像下面这样的字符串


ab.ab.c,ab.d,bc.e,mt


bc.e,nmt


ef.1,mt

我想要的是用regex某种方式解析这些字符串并得到结果


例如


ab.ab.c,ab.d,bc.e,mt


val1 = ab  (take the value prior to first dot)

val2 = ab.c,ab.d,bc.e (take the value after first dot but before the last comma)

val3 = mt (take value after the last comma)

相似地


bc.e,nmt


val1 = bc (take the value prior to first dot)

val2 = e (take the value after first dot but before the last comma)

val3 = nmt (take value after the last comma)


ef.1,mt


val1 = ef

val2 = 1

val3 = mt

现在我的方法更长而且效率低下。这就是我所做的


let val3 = someString.split(',').slice(-1)[0]

let remaining_string = someString.replace("," + val3, "")


let val1 = remaining_string.slice(0, remaining_string.indexOf('.'))    


let val2 = null

if(remaining_string.split(",").length > 1) {

    val2 = remaining_string.replace("."+val1, "")

 }

 else {

    val2 = remaining_string.split(".")[1]

 }

没有任何一个衬垫或清洁的解决方案来获得val1,val2并val3迅速?


哔哔one
浏览 174回答 3
3回答

森栏

首先,找到第一个点和最后一个逗号的索引。var idxPeriod = someString.indexOf(".");var idxComma = someString.lastIndexOf(",");然后使用substring()方法提取必要的部分。var val1 = someString.substring(0, idxPeriod);var val2 = someString.substring(idxPeriod + 1, idxComma);var val3 = someString.substring(idxComma + 1);

HUWWW

您可以使用通用正则表达式来匹配和捕获 1) 字符串开头的任何 1+ 字字符到组 1,2) 第一个非字字符之后的任何字符到组 2 中,直到最后一次出现非- word char 3) 然后是字符串末尾的任何 1+ 字字符。&nbsp;/^(\w+)\W(.*)\W(\w+)$/查看正则表达式演示注意:如果分隔符是固定字符,请使用/^(\w+)\.(.*),(\w+)$/.JS演示:var rx = /^(\w+)\W(.*)\W(\w+)$/;var ss = ["ab.ab.c,ab.d,bc.e,mt", "bc.e,nmt", "ef.1,mt"];for (var i=0; i<ss.length; i++) {&nbsp; var m = ss[i].match(rx);&nbsp; if (m) {&nbsp; &nbsp; &nbsp;console.log([m[1], m[2], m[3]]);&nbsp; }}

叮当猫咪

您可以使用通用正则表达式来匹配和捕获 1) 字符串开头的任何 1+ 字字符到组 1,2) 第一个非字字符之后的任何字符到组 2 中,直到最后一次出现非- word char 3) 然后是字符串末尾的任何 1+ 字字符。&nbsp;/^(\w+)\W(.*)\W(\w+)$/查看正则表达式演示注意:如果分隔符是固定字符,请使用/^(\w+)\.(.*),(\w+)$/.JS演示:var rx = /^(\w+)\W(.*)\W(\w+)$/;var ss = ["ab.ab.c,ab.d,bc.e,mt", "bc.e,nmt", "ef.1,mt"];for (var i=0; i<ss.length; i++) {&nbsp; var m = ss[i].match(rx);&nbsp; if (m) {&nbsp; &nbsp; &nbsp;console.log([m[1], m[2], m[3]]);&nbsp; }}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答