求教replace的使用问题?

JOHNCOOLS 2007-03-10 12:38:32
在文本域中用户可能会输入:
粤A.C1234
粤A.HH123
粤A.C0123
粤A.C0423

AC1234
AHH123
AC0123
AC0423
(通常在Excel上直接复制到文本域)

我需要批量替换文本域中的"."为空 , 并对回车符代替为"," ,没有"粤"的补上"粤" ,
使用中文","的代替为英文","
如果用户已经符合我需要的格式就不变

最终格式化为
粤AC1234,粤AHH123,粤AC0123,粤AC0423



function FormatSearchTxt()
{
document.getElementsByName("txtBatchSearch")[0].value=document.getElementsByName("txtBatchSearch")[0].value.replace(/\r\n/g,",");
}

回车代替为","已经实现了但其他都不实现不了!

请问应该怎样实现啊?谢谢!
...全文
528 35 打赏 收藏 转发到动态 举报
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
mingxuan3000 2007-03-25
  • 打赏
  • 举报
回复
北北。。
muxrwc 2007-03-25
  • 打赏
  • 举报
回复
忽忽。。是啊。。
飘走啦。。北。。
mingxuan3000 2007-03-25
  • 打赏
  • 举报
回复
晕 这js的东西还是要仔细研究才行呀
muxrwc 2007-03-25
  • 打赏
  • 举报
回复
0 "" undefined false NaN
貌似都是false
mingxuan3000 2007-03-25
  • 打赏
  • 举报
回复
var a = 0 也是个动动呀,无效的定义是什么,应该是没定义吧

还是说字符窜有关系
muxrwc 2007-03-25
  • 打赏
  • 举报
回复
飘走的说。。
muxrwc 2007-03-25
  • 打赏
  • 举报
回复
<script type="text/javascript">
var a = 0, b = "hello";
alert(a && "wc");
alert(b && "wc");
</script>
mingxuan3000 2007-03-25
  • 打赏
  • 举报
回复
.{5}这个不严格是有点影响,我感觉主要的是没$这个结束的东西,加了一下感觉还不行,不过大体上明白了
mingxuan3000 2007-03-25
  • 打赏
  • 举报
回复
噢,谢谢
muxrwc 2007-03-25
  • 打赏
  • 举报
回复
(.)??
就是取非贪婪的匹配。。
就是说加了?就不会出现这样的匹配了。。
就是说。。刚那种情况(.)?? 就不会匹配到东西了。。而是.{5}会匹配到完整的C0423
主要还是因为.{5}这个式子不严格才会出现那样的情况。。^o^
忽忽。。
(b || 粤)
这里判断b是假的。。肯定就返回粤。因为粤有内容= true
但是b是真的。就是说匹配到粤就会返回b(当然。。这样属于多此一举动)
然后(c && ",")
这个的效果是两个全有效。则返回最后一个。。。
如果有一个无效则返回无效的那个。。如果都无效则返回第一个。。。貌似这样。。。
muxrwc 2007-03-25
  • 打赏
  • 举报
回复
(粤)?的意思是有没有都可以。。
(.)?是想匹配那个A什么的。
\.?是匹配 那个点有无都可以。。
(.{5})是匹配后5个。。。
([\r\n,,]+|$)
这个是匹配结尾或者换行。。。

但是遇到。这个的话。。
C0423
(粤)?没有匹配到
(.)?则匹配到了C
然后\.?也没有匹配到。。
然后(.{5})匹配的是0423[\r] 是4个和以后回车键。。
所以。。
mingxuan3000 2007-03-25
  • 打赏
  • 举报
回复
/(粤)?(.)??\.?(.{5})([\r\n,,]+|$)/g;
(.)??把?加在第2个后面不是很理解,你看看我的最后那个简单的思路,前面3个可有可无的东西的地位是一样的,为什么?加在(粤)?后不行,这里不是十分明白呀
JOHNCOOLS 2007-03-25
  • 打赏
  • 举报
回复
都是高手,谢谢各位!结分!
muxrwc 2007-03-25
  • 打赏
  • 举报
回复
昂?
@.@
mingxuan3000 2007-03-25
  • 打赏
  • 举报
回复
或的用法也搞清楚了,与别的语言有点不一样

在JavaScript 1.2之后的版本中
布尔操作 a || b 当且仅当a的值是true,或能够转换为true的时候返回a,否则返回b的值
也就是说表达式 a || b的值不是布尔值
if(a || b)是先求表达式的值,再将它的值转换为boolean
mingxuan3000 2007-03-25
  • 打赏
  • 举报
回复
改简单点
var p = /.{0,3}?(.{5})([\r\n,,]+|$)/g;
wc.value = wc.value.replace(p, function (a, b, c) {
return "粤A" + b + (c && ",");
});
mingxuan3000 2007-03-25
  • 打赏
  • 举报
回复
另 (b || "粤")这个用法也很奇怪,怎么返回粤呢?

var a="粤"
if((a||"粤")){ //看这里,或运算应该是返回boolean型的
alert("true")
}
alert((a||"粤"))
mingxuan3000 2007-03-25
  • 打赏
  • 举报
回复
(粤)(.)\.这3个的地位是一样的吧,怎么这2个(粤)\.没问题?
还是说只要一个地方加了,正个匹配模式就是非贪婪的//刚试过,不是这样的,
?加在(粤)?后面不行
muxrwc 2007-03-25
  • 打赏
  • 举报
回复
这样就没问题了。。那里取非贪婪的。。。
<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>
mingxuan3000 2007-03-24
  • 打赏
  • 举报
回复
修改楼上的
<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()">
加载更多回复(15)

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧