javascript 正则表达式的问题
比如说正则表达式里面有两个子匹配怎么能让输出第一个呢比如说一个字符串"1234asdf"和正则表达式/(\d+)(\D+)/怎么能知输出"1234"呢...
比如说正则表达式里面有两个子匹配 怎么能让输出第一个呢 比如说一个字符串"1234asdf" 和正则表达式/(\d+)(\D+)/ 怎么能知输出"1234"呢
展开
4个回答
展开全部
楼上的方法可行,不过还有一些其他的方法 ..
在正则表达式裏,可以通过$1,$2...$9依次取得从左向右每个括号裏的子表达式所匹配的值.在Javascript裏,可以直接利用这些变量进行替换比如:
<script language="Javascript">
var reg = /^(\d+)(\D+)$/;
var str = "123abc"
alert(str.replace(reg,"$1"))
</script>
上面alert出来的值,其实就是第一个分组中的值,不过可能不是你所希望的那样. 那麼看下面的代码:
<html>
<head>
<script language="javascript">
var G=document.getElementById;
function window_load(){
var str = "1234abc";
var reg = /^(\d+)(\D+)$/
//执行下面任何一个正则操作,都会有分组捕获
//reg.test(str);
//str.match(reg);
//str.replace(reg,"");
reg.exec(str);
//可以用RegExp.$1或者RegExp["$1"]取得第一个分组的值
alert(RegExp.$1);
alert(RegExp.$2);
}
</script>
</head>
<body onload="window_load();">
</body>
</html>
在正则表达式裏,可以通过$1,$2...$9依次取得从左向右每个括号裏的子表达式所匹配的值.在Javascript裏,可以直接利用这些变量进行替换比如:
<script language="Javascript">
var reg = /^(\d+)(\D+)$/;
var str = "123abc"
alert(str.replace(reg,"$1"))
</script>
上面alert出来的值,其实就是第一个分组中的值,不过可能不是你所希望的那样. 那麼看下面的代码:
<html>
<head>
<script language="javascript">
var G=document.getElementById;
function window_load(){
var str = "1234abc";
var reg = /^(\d+)(\D+)$/
//执行下面任何一个正则操作,都会有分组捕获
//reg.test(str);
//str.match(reg);
//str.replace(reg,"");
reg.exec(str);
//可以用RegExp.$1或者RegExp["$1"]取得第一个分组的值
alert(RegExp.$1);
alert(RegExp.$2);
}
</script>
</head>
<body onload="window_load();">
</body>
</html>
展开全部
楼主你这个正则括号跟本就没意义啊,加和不加都一样的,没看懂你想说什么,如果你只想输出“1234”,正则这样就行了/\d+|\D+/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
--只输出"1234"
/\d+/
/\d+/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
/(\d+)(\D+)/.exec("1234asdf")[1];
或者
"1234asdf".match(/(\d+)(\D+)/)[1];
是这样么
或者
"1234asdf".match(/(\d+)(\D+)/)[1];
是这样么
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询