Javascript使用replace()替换字符
我有这段代码Javascript使用replace()替换字符,javascript,regex,replace,Javascript,Regex,Replace,我有这段代码 <html> <head> <title>JavaScript String replace() Method</title> </head> <body> <script type="text/javascript"> var re = /(\w+)\s(\w+)/; var str = "zara ali";
<html>
<head>
<title>JavaScript String replace() Method</title>
</head>
<body>
<script type="text/javascript">
var re = /(\w+)\s(\w+)/;
var str = "zara ali";
var newstr = str.replace(re, "$2, $1");
document.write(newstr);
</script>
</body>
</html>
同样在str.replace中,$2,$1,什么是2美元和1美元
var newstr = str.replace(re, "$2, $1");
将第二个单词替换为第一个单词,并在两者之间放置一个。是指向正则表达式备忘单的链接。Regex有点让人困惑,但一旦你让它正常工作,它会非常棒。请查看。该网站在处理正则表达式时非常有用。如果将鼠标悬停在蓝色条下表达式的不同部分上,它将告诉您每个部分的作用。如果你有底部灰色条的不同部分,它会告诉你每个部分的功能
也有许多正则表达式教程,你可以通过谷歌搜索找到,涵盖了基础知识
但用简单的英语来说,你的代码的作用是:
\w+匹配一个或多个字母
\s匹配单个空格
捕获匹配项以供以后参考,并将其保存在$中,其中是数字1-9,从1开始,按捕获顺序递增
所以1美元是第一个,2美元是第二个
在你的例子中,1美元是zara,2美元是ali
在replace中,您所做的就是匹配正则表达式,将输出捕获为$1和$2,然后将其替换为$2,$1,这将成为ali,zara。
我希望这能有所帮助。参考我在上面发表的评论中的链接,了解正则表达式。 但是为了向你解释你发布的代码实际上做了什么 变量re=/\w+\s\w+/;是一个正则表达式。前导和尾随/是分隔符,实际上与正在进行的替换无关,只告诉解释器实际表达式是什么:\w+\s\w+ 这些被称为捕获括号,并被浏览器记住,以便以后在替换中使用。第一组分配给$1,第二组分配给$2,以此类推 \w匹配任何字母数字字符,包括下划线。它相当于[A-Za-z0-9_] +表示将前面的表达式应用一次或多次 \s匹配单个空白字符 因此,您的表达式表示查看字符串zara ali中的一个或多个字母数字字符,并将它们作为一个组存储在$1中,然后是一个空格字符,然后是另一组一个或多个字母数字字符,并将它们作为一个组存储在$2中。如果匹配,则用字符串$2、$1替换该字符串,该字符串实际上是第二个捕获组,后跟逗号和空格,以第一个捕获组结尾
因此,从:zara ali开始,以ali结束,zara脚本旨在使用正则表达式将格式为FirstName LastName的字符串转换为LastName FirstName。线路
var re = /(\w+)\s(\w+)/;
创建正则表达式,下面是其工作原理的分解图,表示注释:
/ # open regular expression
( # open a capturing group, aliased as $1
\w # match any alphanumeric character or underscore
+ # match a single or multiple occurrences of the preceding token
) # close capturing group $1
\s # match a single space
( # open capturing group $2
\w+ # match any single or multiple alphanumeric character or underscore
) # close capturing group $2
/ # close expression
线路
var newstr = str.replace(re, "$2, $1");
将正则表达式应用于str,提取捕获组,反转它们,并在它们之间添加逗号。查找正则表达式教程。您在该变量re中看到的是正则表达式。一个简单的谷歌搜索应该会告诉你很多。明白了,它们是常规表达式的特殊字符。谢谢你们
var newstr = str.replace(re, "$2, $1");