js正则匹配字符串中某段内容

1.如何使用正则

var expression = / pattern /flags;

其中模式(pattern)部分可以是任何简单或复杂的正则表达式,每个正则表达式都带有一个或多个标签(flags)用以标明正则表达式的行为

2.匹配字符串中的某段内容

我们要匹配的文字

var strMatch = `-rw-r--r--. 1 root root   114769 Apr 26 15:39 CN_CM_SHANGHAI_24709063_M.mtl
                -rw-r--r--. 1 root root 2879642 Apr 26 15:39 CN_CM_SHANGHAI_2470190623_Q.obj`;

(1) 截取字符串中以CN_开头.mtl结尾的部分(包含开头和结尾)

var matchReg = /CN_.*?\.mtl/gi;
console.log(strMatch.match(matchReg));//输出 CN_CM_SHANGHAI_24709063_M.mtl
符号 表示
. 除换行符\n之外的任意字符
* 匹配前面的子表达式0次或多次
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符
\. 匹配.
g 全局匹配
i 不区分大小写

(2) 截取字符串以CN_开头,以.mtl之前的内容结尾

  • (?=.mtl) 表示以.mtl结尾的前面字符串,不包含.mtl
var matchReg = /CN_.*?(?=.mtl)/gi;
console.log(strMatch.match(matchReg));//输出CN_CM_SHANGHAI_24709063_M

(3) 截取字符串CN_和.mtl之间的内容(不包含CN_和.mtl)

  • (?<=CN_)表示获取CN_之后的字符串。不包含CN_
var matchReg = /(?<=CN_).*?(?=.mtl)/;
console.log(strMatch.match(matchReg));//输出 CM_SHANGHAI_24709063_M

(4) 截取CN_之后(不包括CN_), .mtl之前的(包括.mtl)的字符串方法

var matchReg = /(?<=CN_).*?\.mtl/;
console.log(strMatch.match(matchReg));//输出 CM_SHANGHAI_24709063_M.mtl

(5) 截取CN_开头,.mtl或者.obj(包含)结尾的字符串

var matchReg = /CN_.*?(.mtl|.obj)/;
console.log(strMatch.match(matchReg));//输出 CN_CM_SHANGHAI_24709063_M.mtl和CN_CM_SHANGHAI_2470190623_Q.obj

(6) 输出以CN_开头,以.mtl或者.obj(不包含)结尾之前的内容

var matchReg = /CN_.*?(?=(.mtl|.obj))/;
console.log(strMatch.match(matchReg));//输出 CN_CM_SHANGHAI_24709063_M和CN_CM_SHANGHAI_2470190623_Q

猜你喜欢

转载自blog.csdn.net/callmeCassie/article/details/106748451