如何使用javascript替换字符串中的最后匹配字符

时间:2012-02-20 06:06:35

标签: javascript regex string replace

我想将键盘上的最后一个输入字符替换为''

我的字符串输入

示例字符串

"<p><strong>abscd sample text</strong></p>"

"<p>abscd sample text!</p>"

我的最后一个角色是动态的,可以是任何东西 a到z,A到Z,0到9,任何特殊字符([〜/&lt;&gt;&amp;(。))。 所以我需要替换那个角色

例如在样本1中我需要替换“t”,而在样本2中需要替换“!”

我试过下面的代码。但它对我不起作用

 var replace = '/'+somechar+'$/';

有什么办法吗?

3 个答案:

答案 0 :(得分:4)

第一步

替换字符串中的字符,使用javaScript的replace()函数。 Here是MDN规范:

  

返回一个新字符串,其中一个或所有匹配的模式由替换替换。模式可以是字符串或RegExp,替换可以是字符串或要为每个匹配调用的函数。

第二步

您需要通过正则表达式定位要替换的角色。您想要替换字符串的最后一个字符,这可以表示为/(.+)(.)$/。 .代表任何字符,+表示不止一个字符。这里(.+)匹配最后一个字符之前的所有字符。 (.)匹配最后一个字符。

您想要替换的是第二个括号内的那个。因此,您使用第一个括号中匹配的相同字符串$1,并替换后面的任何内容。

以下是实现您意图的代码:

text = 'abscd sample text';
text.replace(/(.+)(.)$/, '$1!');

答案 1 :(得分:1)

你真的需要使用正则表达式吗? str = str.slice(0, -1);怎么样?这将删除最后一个字符。

如果您需要替换特定字符,请执行以下操作:

var replace = new RegExp(somechar + '$');
str = str.replace(replace, '');

您不能在字符串中使用斜杠来构建RegEx。例如,这与PHP不同。

答案 2 :(得分:0)

我真的不明白你想要替换哪个角色,但我认为你应该在JS中使用replace()函数:http://w3schools.com/jsref/jsref_replace.asp

string.replace(regexp/substr,newstring)

这意味着所有键盘字符:

[\t\n ./<>?;:"'`!@#$%^&*()[]{}_+=-|\\] 

这样您可以在<标记之前将所有键盘字符替换为""

 string.replace("[a-zA-Z0-9\t\n ./<>?;:"'`!@#$%^&*()[]{}_+=-|\\]<","<")