|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
请先看正确表达式(以及能扫描到的正确结果)
- var reg=/\.vhk[a-z0-9]{3}\s+{\s+\w+:\s+\-\d+px\s+\-\d+px;\s+}/gm;
- console.log(html.match(reg));
复制代码
扫描结果:
- PS E:\wp> node app10
- [
- '.vhk08k {\n background: -274px -141px;\n}',
- '.vhk6zl {\n background: -7px -15px;\n}',
- '.vhk0ao {\n background: -133px -97px;\n}',
- '.vhk9or {\n background: -330px -141px;\n}',
- '.vhkfln {\n background: -428px -15px;\n}',
- '.vhkbvu {\n background: -386px -97px;\n}',
- '.vhk84t {\n background: -176px -141px;\n}',
- '.vhkvxd {\n background: -246px -141px;\n}',
- '.vhkqsc {\n background: -288px -141px;\n}',
- '.vhkjj4 {\n background: -316px -141px;\n}',
- '.vhk0f1 {\n background: -316px -97px;\n}'
- ]
- PS E:\wp>
复制代码
问题一: 如何去掉扫描结果里的 \n
问题二: 感觉正则表达式有些长,所以尝试写短一些,可是会得到NULL的结果
var reg=/\.vhk.+?}/gm;
1.个人觉得再加一个replace替换掉 \n 就可以吧
我写了一个你可以看看
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title></title>
- <style type="text/css">
- .vhk08k {
- background: -274px -141px;
- }
- .vhk6zl {
- background: -7px -15px;
- }
- .vhk0ao {
- background: -133px -97px;
- }
- .vhk9or {
- background: -330px -141px;
- }
- .vhkfln {
- background: -428px -15px;
- }
- .vhkbvu {
- background: -386px -97px;
- }
- .vhk84t {
- background: -176px -141px;
- }
- .vhkvxd {
- background: -246px -141px;
- }
- .vhkqsc {
- background: -288px -141px;
- }
- .vhkjj4 {
- background: -316px -141px;
- }
- .vhk0f1 {
- background: -316px -97px;
- }
- </style>
- </head>
- <body>
- <script type="text/javascript">
- var html=document.querySelector("html").innerHTML;
- var reg=/\.vhk[a-z0-9]{3}\s+{\s+\w+:\s+\-\d+px\s+\-\d+px;\s+}/gm;
-
- var res=html.match(reg);
- res.forEach(function(item,index,arr){
- arr[index]=item.replace(/\n/g,"");
- console.log(arr[index]);
- });
- console.log(res);
- var reg1=/\.vhk.+?}/gm;
- console.log(html.match(reg1));
-
- </script>
- </body>
- </html>
复制代码
2.
reg1是你简化代码的测试,结果是不行的,究其原因是因为.+?匹配不到换行符,所以找不到符合条件的语句,自然就是null了
我去掉所有的换行符之后就可以用你那个简化的来找到你想要的字符串了
但是你要简化必须要先去掉换行符,想匹配换行符就无法简化 so这样已经是最优解
|
|