日期:2014-05-17  浏览次数:20945 次

请教高手一个问题!!!!!!!
用正则实现下面的效果:
 判断一个字符串是否以"人数(5)" 开始(注:括号里的数字可以是不确定整数,数字是不能以0开头的整数),并且字符串只能包含一个这样的匹配。 如果匹配上了就把括号中的数字取出来。 请教如何实现

------解决方案--------------------
/^人数\([1-9]\d*\)$/
------解决方案--------------------
String str = "werwr人数(052)eewrw人数(5)erwe";
Pattern pattern = Pattern.compile("(人数\\([1-9]\\d*\\)){1}");
Matcher matcher = pattern.matcher(str);
if (matcher.find()) {
str = matcher.group();
System.out.println(str);
}
------解决方案--------------------
不会用正则。
给你一个纯java的。

Java code


String s = "人数(5)";
int mynum;
if("人数(".equals(s.substring(0, 3))){
    String num[] = s.split("(")[1].split(")");
    if(num.length>1&&!"0".equals(num[0].substring(0,1))){
        try{
            mynum = Integer.valueOf(num[0]);
        }catch(Exception e){
        }
    }
}
System.out.println(mynum);

------解决方案--------------------
JScript code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<script type="text/javascript">

    function check()
    {
        var a = document.getElementById('num').value;
        var v =/^人数\([1-9]\d*\)$/;
         var b = /\D/;
        if(v.test(a)){
        alert('Yes');
        a=a.substring(3,a.indexOf(")"));
        alert(a);}
        else{alert('No');}
    }
</script> 
<body>
<form id="form1" name="form1" method="post" action="">
  <label>
  <input type="text" name="num" id="num" />
  </label>
  <label>
  <input type="button" name="Submit" onclick="check()" value="提交" />
  </label>
</form>
</body>
</html>

------解决方案--------------------
探讨
/^人数\([1-9]\d*\)$/

------解决方案--------------------
/^人数\([1-9]\d*\)$/
------解决方案--------------------
探讨
JScript code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta ht……

------解决方案--------------------
Java code

        String str1    ="人数(053)xxx(1234)";
        String str2 = "人数(53)xxx(1234)";
        String reg  = "^人数\\([1-9]+\\d*\\).*$";
        if(str1.matches(reg)){
            System.out.println("字符串str1==>人数为:"+str1.substring(str1.indexOf("(")+1,str1.indexOf(")")));
        }else{
            System.out.println("字符串str1不符合规则!");
        }
        if(str2.matches(reg)){
            System.out.println("字符串str2==>人数为:"+str2.substring(str2.indexOf("(")+1,str2.indexOf(")")));
        }else{
            System.out.println("字符串str2不符合规则!");
        }