[英]jQuery how to replace url folder name with regex?
抱歉,我之前在这个问题上误导了我,让我修改一下问题!!!
所有,我需要一个jQuery / JavaScript函数,该函数可以替换字符串中的所有URL文件夹名称。 例如,从(zh-hant到zh-hans);
<a href="http://somedomain.com/zh-hant/folder1/folder2">http://somedomain.com/zh-hant/folder1/folder2</a>
改成
<a href="http://somedomain.com/zh-hans/folder1/folder2">http://somedomain.com/zh-hans/folder1/folder2</a>
我试过下面的代码,但没有用。 这些都没有改变。
var fromStr = '<a href="http://somedomain.com/zh-hant/folder1/folder2">http://somedomain.com/zh-hant/folder1/folder2</a>';
var str = fromStr.replace(/\*zh-hant*/g, 'zh-hans');
有人可以帮忙吗? 非常感谢。
首先, val()
仅适用于表单元素(文本输入等)。 相反,您需要使用text()
方法来更改元素中的文本。
其次,jQuery中的val()
和text()
方法在不带参数的情况下调用时都会获取值/文本,而在将其传递给字符串时会设置值/文本。 它不能就地更新值。 因此,一旦检索到值并完成替换,就必须再次使用val()
方法将其分配回元素。
var str = $(this).val().replace(/\*zh-hant*/g, 'zh-hans');
$(this).val(str);
可以进一步缩短为:
$this.val( $(this).val().replace(/\*zh-hant*/g, 'zh-hans') );
使用正则表达式/zh-hant/g
和核心JS href
和innerText
属性,例如,
$('a').each(function() { this.href = this.href.replace(/zh-hant/g, 'zh-hans'); this.innerText = this.innerText.replace(/zh-hant/g, 'zh-hans'); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <a href="http://somedomain.com/zh-hant/folder1/folder2">http://somedomain.com/zh-hant/folder1/folder2</a>
您将URL传递给URL
构造函数以获取URL
的.pathname
,使用RegExp
/^\\/zh-hant/
将"/zh-hant"
替换为"/zh-hans"
var a = document.querySelector("a"); var url = new URL(a.href); var res = url.origin + url.pathname.replace(/\\/zh-hant/, "zh-hans"); a.href = a.textContent = res; console.log(a.href);
<a href="http://somedomain.com/zh-hant/folder1/folder2">http://somedomain.com/zh-hant/folder1/folder2</a>
<a>
元素没有值。 您需要在文本和href
属性中替换它。 您在正则表达式中也有错误; 您实际上不需要正则表达式,因为您只需要匹配精确的文本。
var newURL = $(this).attr('href').replace('zh-hant', 'zh-hans');
$(this).text(newURL).attr('href', newURL);
您尚未更新<a>
标记...
要更新,请使用text()
或html()
而不是val()
。 .val()
用于表单元素。
$(this).text($(this).text().replace(/\*zh-hant*/g, 'zh-hans'));
更新href
$(this).attr('href', $(this).attr('href').replace(/\*zh-hant*/g, 'zh-hans'));
var $a = $(this); var str = $a.text().replace(/zh-hant/g, 'zh-hans'); $a.attr("href", str).text(str);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.