贴出的正则表达式很多都存在问题的。
比如:匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求 我认为这个表达式更糟,而且还有错误 [a-zA-z] 这里就有一个明显的错误。
再者难道“aaqaaaa://”也是 URL 么?

解决方案 »

  1.   

    还有:匹配HTML标记的正则表达式: <(\S*?)[^>]*>.*? </\1>| <.*? />
    评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力 这个表达式严重存在问题:\S*? 采用可为空的懒惰量词,可能导致该部分无匹配,直接匹配到后面的 [^>]
      

  2.   

    谢谢LZ的好心 不过正则还是按需要来写比较好,没必要贴那么多,而且LZ的正则有写问题
      

  3.   

    这个可以吗? 你测试过吗? 什么环境? 
    我在 UltraEdit 下测 ,没有啊!
      

  4.   

    UltraEdit对正则的支持比较奇怪,别拿它试。好像是因为有一些自己特有的规则,我也没搞懂。另外还是像大家说的,正则并没有想象的那么困难,花上半天时间就可以对基本语法了解透了。当然像断言之类的东西还是很费解,需要多花时间多练习才能用好。不过好在用得到这么复杂语法的地方并不多,所以花个半天时间了解基本语法就够用一阵的了。用网上流传的那些反正我是不放心,还是要知其然知其所以然的好。
    下面这篇介绍正则表达式的文章挺不错的,有兴趣的可以看看
    http://www.unibetter.com/deerchao/zhengzhe-biaodashi-jiaocheng-se.htm
      

  5.   

     // 匹配半角的数字
    function IsHalfNum(object,minSize,maxSize) { 
          var str= "^[0-9]{"+minSize+","+maxSize+"}$";
          var myReg = new RegExp(str);
          return (myReg.test(object.value));
     } // 匹配字符长度function IsAllChar(object,minSize,maxSize){
        var str=(object.value).replace(/[^\x00-\xFF]/g,"aa");
        return (str.length>=minSize && str.length<=maxSize);
    }//匹配半角的英数字
    function IsHalfEnNum(object,minSize,maxSize) { 
      var str= "^[a-zA-Z0-9]{"+minSize+","+maxSize+"}$";
      var myReg = new RegExp(str);
      return (myReg.test(object.value));
    }//匹配Email地址的
    function IsEmail(object,minSize,maxSize) {     if(object.value.length<minSize || object.value.length>maxSize)
        {
        return false;
        }
        var str= "[-\w.]+@[-\w.]+\.[-\w]+";
        var myReg = new RegExp(str);
        return (myReg.test(object.value));
    }
    ...还有可多了,
      

  6.   

    package com.xx925.inet;import java.util.regex.Pattern;public class TestPattern {
    public static void main(String[] args) {
    String[] str = { "1", "1", "1" ,"1"};
    String[] str2 = { "2", "2", "2" ,"0"};
    String pattern = getPattern(str, str2);
    System.out.println(pattern);
    for (int i = 1000; i <= 10000; i++) {
    System.out.print(Pattern.matches(pattern, String.valueOf(i)));
    if (i == 1110 || i == 2220) {
    System.out.println();
    }
    }
    } public static String getPattern(String[] startNum, String[] endNum) {
    StringBuffer buffer = new StringBuffer();
    String[] start = getNum(startNum);
    String[] end = getNum(endNum);
    int flag = Integer.parseInt(startNum[0])-Integer.parseInt(endNum[0]);
    // 234-456 [3-3][0-9]{2} 2[4-9][0-9]{1} 23[4-9] 4[0-4][0-9] 45[0-6]
    for (int i = 0; i < start.length; i++) {
    if (i == start.length - 1) {
    buffer.append(start[0]).append("([").append(startNum[i])
    .append("-9]").append(")|");
    } else if (i == 0&&flag>1) {
    buffer.append("([").append(Integer.parseInt(startNum[i]) + 1)
    .append("-").append(Integer.parseInt(endNum[i]) - 1)
    .append("][0-9]").append("{").append(
    (start.length - i - 1)).append("})|");
    } else if(i==0&&flag<=1){
    //这里不能做任何操作,但是必须存在
    }else{
    buffer.append(start[start.length - i - 1]).append("([").append(
    Integer.parseInt(startNum[i]) + 1).append("-9]").append(
    "[0-9]").append("{").append((start.length - i - 1))
    .append("})|");
    }
    }
    for (int i = 1; i < end.length; i++) {
    if (i == end.length - 1) {
    buffer.append(end[0]).append("([0-").append(endNum[i]).append(
    "]").append(")|");
    } else {
    buffer.append(end[endNum.length - i - 1]).append("([0-")
    .append(Integer.parseInt(endNum[i]) - 1).append("]")
    .append("[0-9]").append("{").append(
    (endNum.length - i - 1)).append("})|");
    } }
    return buffer.toString().substring(0, buffer.toString().length() - 1);
    } private static String[] getNum(String[] startNum) {
    String[] start = new String[startNum.length];
    for (int i = 0; i < startNum.length; i++) {
    StringBuffer buf = new StringBuffer();
    for (int j = 0; j < startNum.length - i - 1; j++) {
    buf.append(startNum[j]);
    }
    start[i] = buf.toString();
    }
    return start;
    }
    }
      

  7.   

    上面的有点小问题!package com.xx925.inet;import java.util.regex.Pattern;public class TestPattern {
    public static void main(String[] args) {
    String[] str = { "1", "9", "9" ,"2"};
    String[] str2 = { "3", "0", "2" ,"0"};
    String pattern = getPattern(str, str2);
    System.out.println(pattern);
    for (int i = 1000; i <= 10000; i++) {
    System.out.print(Pattern.matches(pattern, String.valueOf(i)));
    if (i == 1991 || i == 3020) {
    System.out.println();
    }
    }
    } public static String getPattern(String[] startNum, String[] endNum) {
    StringBuffer buffer = new StringBuffer();
    String[] start = getNum(startNum);
    String[] end = getNum(endNum);
    int flag = Integer.parseInt(endNum[0])-Integer.parseInt(startNum[0]);
    // 234-456 [3-3][0-9]{2} 2[4-9][0-9]{1} 23[4-9] 4[0-4][0-9] 45[0-6]
    for (int i = 0; i < start.length; i++) {
    int flag1 = 9-Integer.parseInt(startNum[i]);
    if (i == start.length - 1) {
    buffer.append(start[0]).append("([").append(startNum[i])
    .append("-9]").append(")|");
    } else if (i == 0) {
    if(flag>1){
    buffer.append("([").append(Integer.parseInt(startNum[i]) + 1)
    .append("-").append(Integer.parseInt(endNum[i]) - 1)
    .append("][0-9]").append("{").append(
    (start.length - i - 1)).append("})|");
    }
    }else{
    if(flag1>1){
    buffer.append(start[start.length - i - 1]).append("([").append(
    Integer.parseInt(startNum[i]) + 1).append("-9]").append(
    "[0-9]").append("{").append((start.length - i - 1))
    .append("})|");
    }
    }
    }
    for (int i = 1; i < end.length; i++) {
    int flag2 = Integer.parseInt(endNum[i])-0;
    if (i == end.length - 1) {
    buffer.append(end[0]).append("([0-").append(endNum[i]).append(
    "]").append(")|");
    } else {
    if(flag2>1){
    buffer.append(end[endNum.length - i - 1]).append("([0-")
    .append(Integer.parseInt(endNum[i]) - 1).append("]")
    .append("[0-9]").append("{").append(
    (endNum.length - i - 1)).append("})|");
    }
    }
    }
    return buffer.toString().substring(0, buffer.toString().length() - 1);
    } private static String[] getNum(String[] startNum) {
    String[] start = new String[startNum.length];
    for (int i = 0; i < startNum.length; i++) {
    StringBuffer buf = new StringBuffer();
    for (int j = 0; j < startNum.length - i - 1; j++) {
    buf.append(startNum[j]);
    }
    start[i] = buf.toString();
    }
    return start;
    }
    }
      

  8.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
    <html> 
    <head> 
    <title>动态增删表格行</title> 
    <script language="JavaScript"> 
    <!-- 
    //author: Robin 
    //email: [email protected] 
    var rowIndex=0; 
    function addLine(obj){ 
    var objSourceRow=obj.parentNode.parentNode; 
    var objTable=obj.parentNode.parentNode.parentNode.parentNode; 
    if(obj.value=='增加'){ 
    rowIndex++; 
    var objRow=objTable.insertRow(rowIndex); 
    var objCell; 
    objCell=objRow.insertCell(0); 
    objCell.innerHTML=" "; 
    objCell=objRow.insertCell(1); 
    objCell.innerHTML=objSourceRow.cells[1].innerHTML; 
    objCell=objRow.insertCell(2); 
    objCell.innerHTML=objSourceRow.cells[2].innerHTML.replace(/增加/,'删除'); 

    else{ 
    objTable.lastChild.removeChild(objSourceRow); 
    rowIndex--; 


    function removeLine(){ 

    //--> 
    </script> 
    </head> 
    <body bgcolor="#ffffff"> 
    <form name="form1" method="post"> 
    <table width="400" border="0"> 
    <tr> 
    <td>基本信息</td> 
    <td><select name="select"> 
    <option value="" selected>选择</option> 
    <option value="1">第一</option> 
    <option value="2">第二</option> 
    </select></td> 
    <td><input name="basicinfo" type="text" id="basicinfo"> 
    <input name="add" type="button" id="add" value="增加" onClick="addLine(this)"></td> 
    </tr> 
    <tr> 
    <td>其它信息</td> 
    <td> </td> 
    <td><span><input type="text" name="textfield"><span></td> 
    </tr> 
    <tr> 
    <td> </td> 
    <td> </td> 
    <td> </td> 
    </tr> 
    <tr> 
    <td> </td> 
    <td> </td> 
    <td> </td> 
    </tr> 
    </table> 
    </form> 
    </body> 
    </html>
      

  9.   

    1、一个正则表达式,只含有汉字、数字、字母、下划线不能以下划线开头和结尾:
    ^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$  其中:
    ^  与字符串开始的地方匹配
    (?!_)  不能以_开头
    (?!.*?_$)  不能以_结尾
    [a-zA-Z0-9_\u4e00-\u9fa5]+  至少一个汉字、数字、字母、下划线
    $  与字符串结束的地方匹配放在程序里前面加@,否则需要\\进行转义 @"^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$"
     (或者:@"^(?!_)\w*(?<!_)$"    或者  @" ^[\u4E00-\u9FA50-9a-zA-Z_]+$ "  )2、只含有汉字、数字、字母、下划线,下划线位置不限:
      ^[a-zA-Z0-9_\u4e00-\u9fa5]+$3、由数字、26个英文字母或者下划线组成的字符串
    ^\w+$4、2~4个汉字
      @"^[\u4E00-\u9FA5]{2,4}$"; 5、
    ^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$用:(Abc)+    来分析:  XYZAbcAbcAbcXYZAbcAb
    XYZAbcAbcAbcXYZAbcAb
    6、
    [^\u4E00-\u9FA50-9a-zA-Z_]
    34555#5' -->34555#5'[\u4E00-\u9FA50-9a-zA-Z_]    eiieng_89_   --->   eiieng_89_
    _';'eiieng_88&*9_    -->  _';'eiieng_88&*9_
    _';'eiieng_88_&*9_  -->  _';'eiieng_88_&*9_public  bool RegexName(string str)
      {
       bool flag=Regex.IsMatch(str,@"^[a-zA-Z0-9_\u4e00-\u9fa5]+$");
       return  flag;
      } Regex   reg=new   Regex("^[a-zA-Z_0-9]+$");   
      if(reg.IsMatch(s))   
      {   
      \\符合规则   
      }   
      else   
      {   
      \\存在非法字符   
      } 
    0 0 0 
    (请您对文章做出评价)
      

  10.   

    URLEncoder.encode("七七IT中国");