我有以下类型的字符串:
ns1.importantClassA,ns1.nonImportantClass
ns2.importantClassB'1[ns2.nonImportantClass1,ns2.nonImportantClass2]
我需要检索重要类的名称(importantClassA,importantClassB)。
我暂时创建了以下代码:
function getData(fullPath)
{
var retVal = fullPath;
var endIndex = retVal.indexOf(",");
var endIndexOption2 = retVal.indexOf("`");
if (endIndexOption2 != -1 && endIndexOption2<endIndex)
{
endIndex = endIndexOption2;
}
if (endIndex != -1)
{
var startIndex = retVal.lastIndexOf('.',endIndex);
if (startIndex != -1)
{
retVal = retVal.substr(startIndex+1,endIndex-startIndex-1);
}
}
return retVal;
}
但显然正则表达式会简化它。 有什么建议吗?
答案 0 :(得分:-1)
试试这个正则表达式:
/.(\w+?)[\,|\']/g
代码:
const regex = /.(\w+?)[\,|\']/g;
var str = "ns2.importantClassB'1[ns2.nonImportantClass1,ns2.nonImportantClass2]";
var found = str.match(regex);
if (found !== null) {
var max = found.length;
for (var i = 0; i < max; i++) {
found[i] = found[i].replace(/[,|'|.]/g, "");
}
}
match()返回正则表达式中匹配的所有字符串(但问题是它包含'。'和“'”或“,”这就是为什么我循环每个匹配并将这些字符替换为“”)。
如果你能找到更好的正则表达式,你可以省略循环部分!