字符串用正则表达式替换正则表达式字符类
String replace regex character classes using regex
这个字符串有需要删除的regex字符类。以及将多个空间缩减为单个空间。
我可以链replace()
,但想问是否可以建议一个正则表达式代码一次完成整个工作。怎样才能做到呢?由于
"'n't't' n't' n't' n't't't食物和饮料'n't' n"
这是必需的:
"食品和饮料"
var newStr = oldStr.replace(/['t'n ]+/g, ''); //<-- failed to do the job
您想要删除所有开头和结尾的空白(空格,制表符,换行符),但在内部字符串中保留空格。您可以使用空白字符类's
作为速记,并将与字符串的开头或结尾匹配。
var oldStr = "'n't't't 'n'n't 'n't 't'tFood and drinks 'n 't'n";
// ^'s+ => match one or more whitespace characters at the start of the string
// 's+$ => match one or more whitespace characters at the end of the string
// | => match either of these subpatterns
// /g => global i.e every match (at the start *and* at the end)
var newStr = oldStr.replace(/^'s+|'s$/g/, '');
如果您还想将内部空格减少到单个空格,I 将建议使用两个正则表达式并将它们链接起来:
var oldStr = "'n't't't 'n'n't 'n't 't'tFood and drinks 'n 't'n";
var newStr = oldStr.replace(/^'s+|'s+$/g, '').replace(/'s+/g, ' ');
在第一个.replace()
之后,所有的前导和尾随空格被删除,只留下内部空格。用单个空格替换一个或多个空格/制表符/换行符。
另一种方法是将所有空格减少到一个空格,然后修剪剩下的一个前后空格:
var oldStr = "'n't't't 'n'n't 'n't 't'tFood and drinks 'n 't'n";
var newStr = oldStr.replace(/'s+/g, ' ').trim();
// or reversed
var newStr = oldStr.trim().replace(/'s+/g, ' ');
.trim()
在ES5.1 (ECMA-262)之前不存在,但无论如何,填充基本上是.replace(/^'s+|'s+$/g, '')
(添加了几个其他字符)。
我推荐这种模式(假设您想在主字符串中保留'n
s或't
s):
/^['t'n ]+|['t'n ]+$/g
如果你不想保留它们,你可以这样写:
/^['t'n ]+|['t'n]*|['t'n ]+$/g
相关文章:
- 不同浏览器中的空白字符正则表达式行为
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 用于匹配不带字符的单词的正则表达式
- 使用正则表达式匹配长度为六个字符的字母数字字符串
- 正则表达式搜索一个空格,后跟一个字符
- 为什么这个正则表达式不't匹配最后一个字母数字字符
- 在字符串列表中搜索任何出现的单词,如果单词的第一个字符匹配,则高亮匹配单词.Javascript正则表达式
- javascript正则表达式来识别所有特殊字符
- Javascript-正则表达式,用于在未转义字符上拆分字符串,例如|,但忽略|
- 如何使用正则表达式限制字符串的第一个字符
- 为什么以下正则表达式不删除 ## 字符
- 模仿负查找以匹配JavaScript正则表达式中没有紧跟特定字符的模式
- 匹配某个字符后所有文本的正则表达式是什么
- Javascript中的正则表达式,用于只有数字的字符串,并且不应在除数字以外的任何位置包含任何字符
- Javascript 正则表达式字符范围 A-z 匹配插入符号 (“^”)
- 为什么在正则表达式字符可选时找不到匹配项
- 我什么时候需要转义正则表达式字符集中的字符(在 [] 内)
- Javascript正则表达式字符匹配
- 字符串用正则表达式替换正则表达式字符类
- 正则表达式字符识别