提交时将texarea中的[X]替换为[Y]
Replace [X] with [Y] in texarea on submit
我有一个表单,用户可以在文本区域内插入音乐和弦[Am], [D]等。用括号括起来的和弦字母。
我想防止用户输入北欧的[H]变体,并在表单提交时将它们替换为英语[B]。
我如何设置一个替换函数,这样做:
[H] -> [B]
[Hm] -> [Bm]
[Hm7] -> [Bm7]
[h] -> [H]
[h7] -> [H7]
我应该足以将括号内的H/H全局替换为同一括号内的大写B。
您是否推荐智能替换功能?
您可以使用以下replace()
调用:
.replace(/'[H(.*?)']/gi, '[B$1]')
片段:
document.forms[0].onsubmit = function() {
var txt = document.querySelector('textarea');
txt.textContent = txt.textContent.replace(/'[H(.*?)']/gi, '[B$1]');
}
<form action="#">
<textarea>test [H] and [H7m], but also [h] and [h7].</textarea>
<input type="submit" value="Submit">
</form>
您正在寻找的称为Regex—正则表达式的缩写。它允许您搜索(和替换)模式,而不仅仅是文字字符串。
要匹配H
和弦,可以使用/'[[Hh]([^']]*)']/g
。这意味着:
-
/
:标记正则表达式的开始(如"
表示字符串的开始) -
'[
:匹配文字[
-
(...)
捕获组:匹配内部的所有内容并存储以供以后使用-
[^']]
:匹配非]
-
*
:匹配最后一个字符零次或多次(零次或多次不是]
的字符)
-
-
']
:匹配文字]
-
/
:标记正则表达式的结束(如"
关闭字符串) -
g
:全局修饰符。使正则表达式匹配输入中的每个出现项,而不仅仅是第一个。
[Hh]
:匹配H
或h
要使用这个,在输入字符串上使用replace函数:
inputstring.replace(/'[[Hh]([^']]*)']/g, "[B$1]");
替换值中的$1
在正则表达式中插入值捕获组
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 我如何找到一个句子中的所有空格并替换忽略它们
- 如何用更合适的内容替换document.write
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 用空格替换下划线PHP
- str.split(someString).join(someOtherString)是否等效于替换
- 使用javascript的图像替换循环
- window.location替换并传递URL历史记录条目中的变量
- 替换标记中的属性
- 指令的模板必须只有一个根元素:With restrict E&替换true
- AngularJs对ng消息的自定义替换
- 用超链接替换URLS
- 用cdata标记替换脚本标记
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 在javascript中,I'我很难弄清楚如何让regex只替换捕获而不替换匹配
- 替换url中变量的值
- 我希望在不替换现有变量的情况下恢复localStorage中的变量
- Wordpress:替换源(域名)链接
- 提交时将texarea中的[X]替换为[Y]