如何使用javascript正则表达式全局查找和替换文本区域字符串的开头
How to use a javascript Regex to globally find and replace the beginning of a string from a textarea
我试图在JavaScript字符串中替换任何非编码的&号,并且想知道这是否可能。我有regex构建来检测字符串中的这个,但是当我做替换时,我将失去参数名称。
当前输入:http://www.somesite.com/id/2343?paramA=1¶mB=asdf
从textarea
<textarea id='test-box'>http://www.somesite.com/id/2343?paramA=1¶mB=asdf</textarea>
var str = $('#test-box').val();;
var regex = /&[a-z]+=/gi;
str = str.replace(regex, [REPLACE &'s WITH &'s]);
console.log(str);
期望输出:
http://www.somesite.com/id/2343?paramA=1&paramB=asdf
我如何使用JavaScript来保持参数的名称,并简单地将'&'
替换为'&'
?
试试这个regex: /&(?=[a-z]+=)/
和这个替换:&
这使用了一个前瞻性断言,而不是吃掉参数名。
如果您有一个可能部分用HTML编码的URL,并且您试图尽最大努力生成XHTML验证textarea内容,那么您可以使用HTML字符引用列表来识别不属于HTML字符引用的&号:
str.replace(/&(?!#(?:[0-9]|[xX][0-9A-Fa-f])|lt;|gt;|amp|...)/g, '&')
的地方……被替换为您想要识别的列表中的一组实体。
请注意,大多数这些字符引用以分号结束,因此不允许立即后跟等号,因此与URL参数不会有歧义。为了向后兼容,只有某些实体可以不带分号出现。
如果你不关心验证,那么你可以让浏览器照顾它,确保你的URL不包含子字符串</textarea
,做一些像
str.replace(/</g, '%3c')
除了前瞻性断言,您还可以使用反向引用:
var regex = /&([a-z]+)=/gi;
str = str.replace(/&([a-z]+)=/gi,'&$1');
当$n
出现在替换字符串中时,它将被regexp中第n个带括号的模式所替换。
谁需要regex当你有jQuery html()
。特别是因为你的问题上有一个jquery
标签:D
这样做是利用浏览器的innerHTML
属性。看到api
小提琴
var str = 'http://www.somesite.com/id/2343?paramA=1¶mB=asd';
$('#test-box').text(str);
$('#html-box').text($('#test-box').html());
相关文章:
- onkeyup无法动态创建多个文本区域
- 具有所有样式的文本正在复制到可编辑文本区域
- 在文本区域POST后解码JSON
- HTML文本区域文本到XML
- 阻止在文本区域/文本框中输入数字
- 使用 javascript 单击图片后更改<文本区域>文本
- 使用 javascript 检测文本区域/文本输入中的 HTML 标记,但它应该支持常见的>和<
- 在按 Tab 键时选择文本区域文本
- 切换文本区域文本,但保留对文本的更改
- 清除文本区域/文本框内容的按钮
- 加载页面时,聚焦并全选文本区域文本
- 如何使可编辑文本区域文本不可选择
- 我的文本区域文本是't用javascript将我想要的样式设置为CSS
- 使用jQuery将文本区域文本安全地存储在隐藏字段中,然后稍后在PHP中使用该文本
- 删除文本区域文本提交在新的选项卡
- 如何在添加新文本时保持文本区域文本静态
- 使用 jQuery 将文本区域文本设置为格式正确的 HTML 代码
- 为什么文本添加到区域文本是通过页面刷新,而不是直接刷新
- 使用 jquery 修改文本区域文本
- 如何使用Javascript在文本区域(文本框)中单击(光标闪烁)而不使用鼠标单击