首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 求一个正则表达式 [无满意答案结帖,结帖人:TsungLee]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • TsungLee
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-21 15:10:45 楼主
    字符串由数字、大小写字母和百分号组成,长度不定,例如:%E7%AF%AE%E7%90%83
    怎样写正则表达式呢? 我试过.+ 但是不行。
    我是用在urlrewriter.xml里面的
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wcwtitxu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 19:53:491楼 得分:0
    JScript code
    /(?:%[\da-f]{2})+/i
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhengpeiyong
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 20:44:242楼 得分:0
    [0-9a-zA-Z%]
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wcwtitxu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 21:05:013楼 得分:0
    我上面回答错误。
    抱歉
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhsp1029
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 21:45:134楼 得分:0
    /(%\w{2})+/


    例如:
    <script language="javascript">
    var str = "%E7%AF%AE%E7%90%83";
    if(str.match(/(%\w{2})+/))
    {
    alert("match");
    }
    else
    {
    alert("not match");
    }
    </script>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sxn19811006
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 09:40:415楼 得分:0
    /^(%\w{2})+$/
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • TsungLee
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 11:50:226楼 得分:0
    可能我没说清楚。字符串的长度和排列顺序都是不定的,像这个:9jb%2Fh98hogMYTGYibWSqwA%3D%3D
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mingxuan3000
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 11:56:037楼 得分:0
    用反证法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • TsungLee
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 12:18:348楼 得分:0
    反证法?怎么用呢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • buddyboyBB
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 17:19:289楼 得分:0
    反义:[^%a-z0-9A-Z]
    如果这个返回的是不为空则说明不匹配
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • buddyboyBB
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 17:21:0810楼 得分:0
    [^%a-z0-9A-Z]


    例如:
    <script language="javascript">
    var str = "%E7%AF%AE%E7%90%83";
    if(str.match(/[^%a-z0-9A-Z]/)
    {
    alert("not match");
    }
    else
    {
    alert(" match");
    }
    </script>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • buddyboyBB
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 17:26:4011楼 得分:0
    反义写错了这样:
    [^(%a-z0-9A-Z)]
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • TsungLee
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 13:49:4212楼 得分:0
    还是不太行。

    我想匹配这样的路径/Bja7orTrlHq1hr%2FOUTO7XQ%3D%3D.htm

    在urlrewrite.xml里面这样写
    <rule>
    <from>/(.+).htm </from>
    <to>/detail.jsp?q=$1 </to>
    </rule>

    为什么总是不行呢?请高手指教。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinmo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      6

      2

    发表于:2008-08-23 13:59:2813楼 得分:0
    ^[a-z0-9A-Z\%]$
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • luxu001207
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 14:18:0214楼 得分:0
    引用 13 楼 chinmo 的回复:
    ^[a-z0-9A-Z\%]$

    ^[a-z0-9A-Z\%]*$

    纠正一下,嘿嘿,哈哈!~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • luxu001207
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 14:18:5015楼 得分:0
    ^[a-z\dA-Z\%]+$
    不允许为空的话,用这个
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • TsungLee
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 15:06:2316楼 得分:0
    真不知道是什么问题了,以上各位的试过都没用。现在发现如果用(.+) ,只要字符串里面没有%2F就可以。这个%2F是不是空格的意思?怎么匹配它呢?我这样写((.|(%2F))+)也不行。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ncm0227120
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 15:26:2417楼 得分:0
    <script language="javascript">
    function show()
    {

      var s=/^[a-zA-Z0-9%]+$/;
    var value=document.getElementById("txt").value;//获取文本的值
    if(s.test(value)==false)
    {
    alert("NO");
    }else
    {
      alert("OK");
    }

    }

    </script>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinmo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      6

      2

    发表于:2008-08-23 16:32:5718楼 得分:0
    肯定是你传递过来的值已经编译
    才导致这样的

    比如%20就是URL编码的空格
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinmo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      6

      2

    发表于:2008-08-23 16:34:4019楼 得分:0
    %2F是URL编码编译后是/
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • TsungLee
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 16:52:4620楼 得分:0
    那怎么解决呢?如果我直接用/detail.jsp?q=Bja7orTrlHq1hr%2FOUTO7XQ%3D%3D 是可以访问的,但换成/Bja7orTrlHq1hr%2FOUTO7XQ%3D%3D.htm 就不行了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinmo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      6

      2

    发表于:2008-08-23 16:57:4021楼 得分:0
    那是当然的啊
    因为你出现了字母和数字还有%以外的字符
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • TsungLee
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 17:06:4322楼 得分:0
    从字面看,要匹配的就只有Bja7orTrlHq1hr%2FOUTO7XQ%3D%3D,没有其他字符啊?如果是传递过来的值已经编译,那么%3D这些肯定也会有影响的,但现在包含%3D、%2B这些都可以,唯独是%2F不行。为什么会这样呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinmo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      6

      2

    发表于:2008-08-23 17:33:4723楼 得分:0
    你把那些值输出
    看下不就知道了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinmo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      6

      2

    发表于:2008-08-23 17:36:5524楼 得分:0
    我感觉是你的理解错误,导致你说出来的东西舞蹈别人了
    Bja7orTrlHq1hr%2FOUTO7XQ%3D%3D你这个反编译过来是:
    Bja7orTrlHq1hr/OUTO7XQ==


    /detail.jsp?q=Bja7orTrlHq1hr%2FOUTO7XQ%3D%3D 你这个是在地址栏上显示的

    但是在你接受q的值的时候,他实际是Bja7orTrlHq1hr/OUTO7XQ==而不是Bja7orTrlHq1hr%2FOUTO7XQ%3D%3D
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • TsungLee
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 17:54:4025楼 得分:0
    可能我也是没说清楚。接受q值的时候,得到的确实是Bja7orTrlHq1hr/OUTO7XQ== ,这个没错的。但现在问题是,用正则表达式转向的时候,不能把/Bja7orTrlHq1hr%2FOUTO7XQ%3D%3D.htm 转为/detail.jsp?q=Bja7orTrlHq1hr%2FOUTO7XQ%3D%3D  ,总是找不到页面。按我的理解,正则表达式匹配的时候,应该不会把它编译成Bja7orTrlHq1hr/OUTO7XQ== 吧。这个编译应该只在后面的java程序取q值的时候发生。不知道这样理解对不对。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • TsungLee
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 17:56:5826楼 得分:0
    正则表达式匹配的时候,关注的应该只是字符串由什么组成。至于这个字符串可以编译成什么,它应该不管吧。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinmo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      6

      2

    发表于:2008-08-23 19:57:2027楼 得分:0
    晕,你不管字符串由什么组成怎么能匹配得对啊???
    包含/这个在内就要断开了出错了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinmo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

      6

      2

    发表于:2008-08-23 19:58:3028楼 得分:0
    要匹配/这个必须用\/这样来匹配
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinmo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名: