JS利用正则配合replace替换指定字符

定义和用法

replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

语法

stringObject.replace(regexp,replacement)

参数  描述
regexp 必需。规定了要替换的模式的 RegExp 对象。请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。
replacement 必需。一个字符串值。规定了替换文本或生成替换文本的函数。

返回值

一个新的字符串,是用 replacement 替换了 regexp 的第一次匹配或所有匹配之后得到的。

说明

字符串 stringObject 的 replace() 方法执行的是查找并替换的操作。它将在 stringObject 中查找与 regexp 相匹配的子字符串,然后用 replacement 来替换这些子串。如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。

replacement 可以是字符串,也可以是函数。如果它是字符串,那么没有匹配都将由字符串替换。但是 replacement 中的 $ 字符具有特定的含义。如下表所示,它说明从模式匹配得到的字符串将用于替换。
字符  替换文本
$1、$2、...、$99  与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
$& 与 regexp 相匹配的子串。
$` 位于匹配子串左侧的文本。
$' 位于匹配子串右侧的文本。
% 直接量符号。

注意:ECMAScript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。

实例

例子 1

在本例中,我们将使用 "W3School" 替换字符串中的 "Microsoft":
复制代码 代码如下:
<script type="text/javascript">

var str="Visit Microsoft!"
document.write(str.replace(/Microsoft/, "W3School"))

</script>

输出:

Visit W3School!

例子 2

在本例中,我们将执行一次全局替换,每当 "Microsoft" 被找到,它就被替换为 "W3School":
复制代码 代码如下:
<script type="text/javascript">

var str="Welcome to Microsoft! "
str=str + "We are proud to announce that Microsoft has "
str=str + "one of the largest Web Developers sites in the world."

document.write(str.replace(/Microsoft/g, "W3School"))

</script>

输出:

Welcome to W3School! We are proud to announce that W3School
has one of the largest Web Developers sites in the world.

例子 3

您可以使用本例提供的代码来确保匹配字符串大写字符的正确:
复制代码 代码如下:
text = "javascript Tutorial";
text.replace(/javascript/i, "JavaScript");

例子 4

在本例中,我们将把 "Doe, John" 转换为 "John Doe" 的形式:
复制代码 代码如下:
name = "Doe, John";
name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");

例子 5

在本例中,我们将把所有的花引号替换为直引号:
复制代码 代码如下:
name = '"a", "b"';
name.replace(/"([^"]*)"/g, "'$1'");

例子 6

在本例中,我们将把字符串中所有单词的首字母都转换为大写:
复制代码 代码如下:
name = 'aaa bbb ccc';
uw=name.replace(/\b\w+\b/g, function(word){
return word.substring(0,1).toUpperCase()+word.substring(1);}
);

例子 7
复制代码 代码如下:
var str="fsaf$a$assdfdasfa$a$dsfadsf";
var strr='\$'+'a'+'\$';
var name = '"a", "b"';
var reger=new RegExp("[\$]a[\$]","gm");

alert(str.replace(reger,'555888'));

PS:这里再为大家提供一款功能强大的在线正则工具供大家使用:

JavaScript正则表达式在线测试工具:

http://tools.jb51.net/regex/javascript

正则表达式在线生成工具:

http://tools.jb51.net/regex/create_reg

时间: 2024-07-31 01:56:21

JS利用正则配合replace替换指定字符的相关文章

JS利用正则配合replace替换指定字符_正则表达式

定义和用法 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. 语法 stringObject.replace(regexp,replacement) 参数 描述 regexp 必需.规定了要替换的模式的 RegExp 对象.请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象. replacement 必需.一个字符串值.规定了替换文本或生成替换文本的函数. 返回值 一个新的字符串,是用 repl

利用正则和charCodeAt() 区分中英文字符的两种方法

利用正则和charcodeat() 区分中英文字符的两种方法 <div id="demo"> <fieldset>  <legend>请在如下表单中输入字符后点击表单外区域</legend>  <label for="regexp">通过正则表达式判断:<input id="regexp" name="regexp" /></label>  &

sql update批量替换指定字符笔记

最简单的替换直接把一个字段的0状态改成1,例子  代码如下 复制代码 update  `表名A` set is_checked=1 WHERE cityid=93 影响列数: 214 (查询花费 0.0833 秒) 替换了214条记录了,我们只使用了最简单的update set命令了,这样就成功批量更新了一指数据了,那么我们发现有些字符串中只有几个字符有问题要怎么替换?  代码如下 复制代码 update 表名  set  `字段`=replace(字段, '替换的内容', '') WHERE

mysql 中replace()批量替换指定字符语句

将cdb_pms表subject字段中的Welcom to替换成 欢迎光临  代码如下 复制代码 UPDATE `cdb_pms` SET `subject` = REPLACE(`subject`, 'Welcome to', '欢迎光临') WHERE INSTR(`subject`,'Welcome to') > 0 替换cdb_posts表的message字段,将"viewthread.php?tid=3989"替换成"viewthread.php?tid=16

三款js替换指定字符或字符串函数

文字替换(置换字符) pattern pattern = pattern.compile("正则表达式"); matcher matcher = pattern.matcher("正则表达式 hello world,正则表达式 hello world "); stringbuffer sbr = new stringbuffer(); while (matcher.find()) { matcher.appendreplacement(sbr, "java

mysql replace()批量替换指定字符实现语句

批量替换的具体语法是:  代码如下 复制代码 UPDATE 表名 SET 指定字段 = replace(指定字段, '要替换的字符串', '想要的字符串') WHERE 条件; 如果你想把 article 表中 ID 小于5000的记录,content 字段中"解决"替换成"解放",那么语法就是:  代码如下 复制代码 UPDATE article SET content = replace(content, '解决', '解放') WHERE ID<5000

正则匹配后面非指定字符的正则[原创]_正则表达式

我想匹配后面只要不是x和.net的asp. 如:asp.net aspx asp aspyu  只需要匹配aspyu和asp这样的正则,我弄了老会,也没弄出来,大家帮忙啊 负向预查: [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 这是我在经典论坛问的一个问题,感谢Sheneyan(子虚乌有)版主

正则匹配后面非指定字符的正则 原创

我想匹配后面只要不是x和.net的asp. 如:asp.net aspx asp aspyu  只需要匹配aspyu和asp这样的正则,我弄了老会,也没弄出来,大家帮忙啊 负向预查: <script type="text/javascript"> var arr = "asp.net aspx asp aspyu asp.ne aspxx".split(" "); for(var i = 0 ; i < arr.length ;

ASP中让Replace替换不区分大小写的方法_应用技巧

我们先来看一看 Replace 的详细参数 描述返回字符串,其中指定数目的某子字符串被替换为另一个子字符串.语法Replace(expression, find, replacewith[, compare[, count[, start]]]) Replace 函数的语法有以下参数: 参数 描述 expression 必选项. 字符串表达式 包含要替代的子字符串. find 必选项.被搜索的子字符串. replacewith 必选项.用于替换的子字符串. start 可选项.expressio