<textarea id="wc" cols="110">粤A.C1234
粤A.HH123
粤A.C0123
粤A.C0423
AC1234
AHH123
AC0123
AC0423</textarea>
<script type="text/javascript">
var wc = document.getElementById("wc");
var p = /(粤)?(.)\.?(.{5})([\r\n]+|$)/g;
wc.value = wc.value.replace(p, function (a, b, c, d, e) {
return (b || "粤") + c + d + (/[\r\n]/.test(e) ? "," : "");
});
</script>

解决方案 »

  1.   

    楼上的好厉害哦!可以实现了!但还有些小小瑕疵!
    在Excel复制数据到文本域中,如果最后一个数据后面有回车符
    当输入数据格式化后第一次是正常的,变成以下这样
    粤AHH123,粤AC0123,粤AC0423,这不是重点,重点是当再按一次格式化就会变成这样
    粤AHH123,粤AC0123,粤A粤C0423,
    我试过好多次不同数据都是这样哦!还有对于中文的逗号",",没有进行处理哦!请大大继续加油帮帮忙哦!谢谢!
      

  2.   

    <textarea id="wc" cols="110">粤AHH123,粤AC0123,粤AC0423,粤A.C1234
    粤A.HH123
    粤A.C0123
    粤A.C0423
    AC1234
    AHH123
    AC0123
    AC0423</textarea>
    <script type="text/javascript">
    var wc = document.getElementById("wc");
    var p = /(粤)?(.)\.?(.{5})([\r\n,,]+|$)/g;
    wc.value = wc.value.replace(p, function (a, b, c, d, e) {
    return (b || "粤") + c + d + (/[\r\n,,]/.test(e) ? "," : "");
    });
    </script>
    忽忽,昨天没注意还要替换,
      

  3.   

    结尾有个,是因为你的那个串,结尾还有东西。。并不是
    "string"
    而是
    "string "
    之类的。。
      

  4.   

    因为之前本人出差,所以不能上网!谢谢大大的热心!我之前说的问题解决了!使用第二次你提供的代码就没有我说的情况出现了
    但我又有一个问题问题:
    我想完善这个功能,当输入
    C1234
    HH123
    C0123
    C0423
    可以自动补充为
    粤AC1234,粤AHH123,粤AC0123,粤AC0423
    请问应该怎样改你的代码啊?
    谢谢!
      

  5.   

    修改楼上的
    <textarea id="wc" cols="110">粤AHH123,粤AC0123,粤AC0423,粤A.C1234
    粤A.HH123
    粤A.C0123
    粤A.C0423
    AC1234
    AHH123
    AC0123
    AC0423
    C0423</textarea>
    <script type="text/javascript">
    function cc(){
    var wc = document.getElementById("wc");
    alert(wc)
    var p = /(粤)?(.)?\.?(.{5})([\r\n,,]+|$)/g;
    wc.value = wc.value.replace(p, function (a, b, c, d, e) {
    return "粤A" + d + (/[\r\n,,]/.test(e) ? "," : "");
    });
    }
    </script>
    <input type="button" value="press" onclick="cc()">
      

  6.   

    都是牛人
    学点东西
    return (b || "粤") + (c||"A") + d + (/[\r\n,,]/.test(e) ? "," : "");
      

  7.   

    楼上两位,当我输入
    C1234
    HH123
    C0123
    C0423
    没效哦!!不能自动补充完整哦!
      

  8.   

    这样就没问题了。。那里取非贪婪的
    <textarea id="wc" cols="110">粤A.HH123,粤A.C1234
    粤A.HH123
    粤A.C0123
    粤A.C0423
    AC1234
    AHH123
    AC0123
    AC0423
    C0423
    C0423
    C0423</textarea>
    <script type="text/javascript">
    var wc = document.getElementById("wc");
    var p = /(粤)?(.)??\.?(.{5})([\r\n,,]+|$)/g;
    wc.value = wc.value.replace(p, function (a, b, c, d, e) {
    return "粤A" + d + (e && ",");
    });
    </script>
      

  9.   

    另 (b || "粤")这个用法也很奇怪,怎么返回粤呢?var a="粤"
    if((a||"粤")){ //看这里,或运算应该是返回boolean型的
       alert("true")
    }
    alert((a||"粤"))
      

  10.   

    改简单点
    var p = /.{0,3}?(.{5})([\r\n,,]+|$)/g;
    wc.value = wc.value.replace(p, function (a, b, c) {
    return "粤A" + b + (c && ",");
    });
      

  11.   

    或的用法也搞清楚了,与别的语言有点不一样在JavaScript 1.2之后的版本中
    布尔操作 a || b 当且仅当a的值是true,或能够转换为true的时候返回a,否则返回b的值
    也就是说表达式 a || b的值不是布尔值
    if(a || b)是先求表达式的值,再将它的值转换为boolean
      

  12.   

    /(粤)?(.)??\.?(.{5})([\r\n,,]+|$)/g;
    (.)??把?加在第2个后面不是很理解,你看看我的最后那个简单的思路,前面3个可有可无的东西的地位是一样的,为什么?加在(粤)?后不行,这里不是十分明白呀
      

  13.   

    (粤)?的意思是有没有都可以。。
    (.)?是想匹配那个A什么的。
    \.?是匹配 那个点有无都可以。。
    (.{5})是匹配后5个
    ([\r\n,,]+|$)
    这个是匹配结尾或者换行但是遇到。这个的话。。
    C0423
    (粤)?没有匹配到
    (.)?则匹配到了C
    然后\.?也没有匹配到。。
    然后(.{5})匹配的是0423[\r] 是4个和以后回车键。。
    所以。。
      

  14.   

    (.)??
    就是取非贪婪的匹配。。
    就是说加了?就不会出现这样的匹配了。。
    就是说。。刚那种情况(.)?? 就不会匹配到东西了。。而是.{5}会匹配到完整的C0423
    主要还是因为.{5}这个式子不严格才会出现那样的情况。。^o^
    忽忽。。
    (b || 粤)
    这里判断b是假的。。肯定就返回粤。因为粤有内容= true
    但是b是真的。就是说匹配到粤就会返回b(当然。。这样属于多此一举动)
    然后(c && ",")
    这个的效果是两个全有效。则返回最后一个
    如果有一个无效则返回无效的那个。。如果都无效则返回第一个貌似这样
      

  15.   

    <script type="text/javascript">
    var a = 0, b = "hello";
    alert(a && "wc");
    alert(b && "wc");
    </script>
      

  16.   

    var a = 0 也是个动动呀,无效的定义是什么,应该是没定义吧还是说字符窜有关系
      

  17.   

    0 "" undefined false NaN
    貌似都是false