javascript - 使用 javascript/jQuery 切换字符位置

标签 javascript jquery regex

我有一个字符串,例如:

var string = 'This is a test sentence. Switch the characters. i .';

我想切换每次出现的字母“i”及其后面的字符的位置,除非后面的字符是“t”或“空格”或“换行符”等非字符。所以结果输出应该是这样的:

Thsi si a test sentence. Switch the characters. i . // switches 's' but not 't' and 'space'

使用正则表达式可以完成这样的任务吗?我正在使用的字符是 unicode 字符。 “我”只是一个例子。这意味着匹配所有字符并不是一个好主意。可能是一个not表达式?我尝试了一些循环替换,但这些并不优雅(或高效)。有什么想法吗?

最佳答案

您可以使用具有该形式的正则表达式的替换:

var string = 'This is a test sentence. Switch the characters. i .';
var result = string.replace(/(i)(?![t\s])(.)/g, "$2$1");

jsfiddle demo

(i) 匹配 i 并将其捕获到变量 $1 中。

(?![t\s]) 防止 t 和空格的匹配。

(.) 匹配任何其他字符并将其捕获到变量 $2 中。

关于javascript - 使用 javascript/jQuery 切换字符位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21406495/

相关文章:

java - 在 java 正则表达式中,我怎样才能得到一个字符类,例如[a-z] 匹配 - 减号?

在 html 中插入图像对象时 JavaScript 不工作

javascript - 设置日期变量的格式以删除不需要的字符

javascript - Yii2:重复相关模型中的字段

java - java中如何从乱七八糟的字符串中抓取文本?

javascript - 正则表达式拒绝以点以外的非字母结尾的名称

javascript - 忽略了对未接受模块的更新

javascript - 使用 JS 获取 URL 参数

javascript - 为什么在附加到 DOM 时要连接 HTML 标签

javascript - 使用 jquery 的 deferred 和 settimeout