jquery 怎么用正则提取字符串里面的内容?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery 怎么用正则提取字符串里面的内容?相关的知识,希望对你有一定的参考价值。

如题:
jquery 代码,比如:var a = "文字:123,文字:234,文字:345,文字:456。文字:567?文字中文:123?";

html代码:
<ul>
<li>文字:123</li>
<li>文字:234</li>
<li>文字:345</li>
<li>文字:456</li>
<li>文字:567</li>
<li>文字:123</li>
</ul>
这样的用jquery什么方法来处理呢?
li里面的内容只能是a变量里面的内容,不能自己定义或者用字符串追加上去,用jquery什么方法来搞定啊?帮个忙哟

你好,

这个问题其实也简单,但不知道是不是你要的效果:

var a = "文字:123,文字:234,文字:345,文字:456。文字:567?文字中文:123?";
var arr = a.split(/,|。|?/); // ["文字:123", "文字:234", "文字:345", "文字:456", "文字:567", "文字中文:123", ""]

var rs = '<ul>';
$.each(arr, function(idx, item) 
    // 非空验证
    if (item) 
        rs += '<li>' + item + '</li>';
    
);
rs += '</ul>';

console.log(rs); // <ul><li>文字:123</li><li>文字:234</li><li>文字:345</li><li>文字:456</li><li>文字:567</li><li>文字中文:123</li></ul>

这样得到的rs就是你上面的结果。如有疑问可追问。

追问

恩,非常感谢!
这就是我要的效果,可是想把”中文“这两个也去掉呢?是不是在split方法里面写上,比如 var arr = a.split(/,|。|?|中文/);?
另外,如果js里面有很多类似这样的呢?大概有20多个这样的变量吧。都是从富文本框里面用match方法查找出来的,都是字符串。
这样的,该怎么处理,总不可能每个都单独去定义和处理吧?有没有好的方法?

追答

去掉中文就不在正则里面处理了,修改下代码如下:

var a = "文字:123,文字:234,文字:345,文字:456。文字:567?文字中文:123?";
var arr = a.split(/,|。|?/);
 
var rs = '<ul>';
$.each(arr, function(idx, item) 
    // 非空验证
    if (item) 
        rs += '<li>' + item.replace(/中文/g, '') + '</li>';
    
);
rs += '</ul>';
 
console.log(rs);

看看,这些里面就没有“中文”了。

追问

你好,有20多个这样的变量,每个变量里面的值都不一样,打个比方:
var b = '中文:123,中文好:234。中文你好:345?';
var c = '数字:123,数字好:234。数字你好:345?';
var d = '看我:123,看我好:234。看我你好:345?';
var e = '例子:123,例子好:234。例子你好:345?';
....
这样的该怎么处理?是不是用for循环来处理啊?

参考技术A js我不怎么会,按我的理解,比较笨的办法:

var a = "文字:123,文字:234,文字:345,文字:456,文字:567";
var arr =a.split(',');
console.log(arr);
for(var i in arr)
alert(arr[i])
$("ul ").append("<li>"+arr[i]+"</li>"); //可以给ul加个id把li的内容都append进去
追问

非常感谢!
如果用for(var i in arr)方法来做的话,有个不好的问题,因为页面有很多这样的变量,用for来做的话,不好处理吧?

PHP正则提取字符串

字符串
$str = "中文abcd123$1,2,3,4,5.jpg";
要求只提取中的内容,
不要只是这个字符串的哦,
要求其它同格式的字符串也能适用。
能不能不要那个大
只要里面的内容?

参考技术A 有 () [] <>可以
<?php
$str = '中文abcd123$1,2,3,4,5.jpg[123123]444<44g>44.124(j)12g4';
$search ='/[(\[<](.*?)[)\]>]/';
preg_match_all($search,$str,$r);
print_r($r[1]);
?>本回答被提问者采纳
参考技术B 下面这个例子和你的相似 ,直接套用就行
<script>
window.onload=function ()
var s="/?type=22?ee=33";
//lastIndexOf 这是最后一次出现?的位置
//indexOf 这是第一次出现?的位置
var dd=s.substr(s.lastIndexOf('?'));
alert(dd);

</script>追问

我问得是PHP,
还有是 正则。。。。

追答

这个函数完全可以实现你的那个功能,没必要非得用php或是正则, 如果是在非得用的话 你就用php的 函数实现吧 先找到的位置 然后找到的位置 最后通过截取这两个位置之间的恭喜

追问

没办法,我还就得用PHP的。
你说的原理我也知道。
但要能做才行吖。

参考技术C $str="中文abcd123\$1,2,3,4,5.jpg";
preg_match("/\.+\/", $str,$sub);
print_r($sub);
参考技术D 本地测试无误:

$str = '中文abcd123$1,2,3,4,5.jpg';
preg_match('/\(.*)\/',$str,$m);
echo $m[1];
第5个回答  2012-04-26 \[^\]*\追问

你这个好像不行吖。。。
我在在线测试那里过不了

以上是关于jquery 怎么用正则提取字符串里面的内容?的主要内容,如果未能解决你的问题,请参考以下文章

c#用正则表达式提取小括号中的内容

Java中如何用正则表达式来提取string中两个/里面之间的内容?

答果子问R语言如何用正则表达式提取特定的字符串

正则表达式如何匹配提取括号中的内容

PHP正则提取字符串

用java正则表达式提取java程序中的注释