【问题标题】:custom javascript regex like wordpress page tile自定义 javascript 正则表达式,如 wordpress 页面图块
【发布时间】:2019-05-06 05:29:33
【问题描述】:

我正在做出反应,我正在处理一个显示 URL 路径的输入,如 wordpress 页面标题,你在输入中输入一个标题,它会显示页面的路径 onBlur...

我设法完成了整件事,但我仍然需要一个自定义正则表达式来显示输入值的 Url:

使用 (.replace())

  • 我需要修剪末尾和开头的空白
  • 用 ('-') 替换所有空格,但防止连续出现 2 个空格
  • 将特殊字符替换为 ('-')
  • 将 ç ñ ö é ì .etc 等字母替换为 c n o e i

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 当一行中有多个破折号时,您希望发生什么?浓缩成一个?
  • 您是否有任何代码可以显示您正在尝试做什么,或者您自己尝试过什么,这样提供答案的人就可以避免暗示您已经做过什么?
  • 最好添加一些输入输出示例
  • 对不起,我花了 18 个小时在网站上工作,当我读到这篇文章时,我可以看到它现在有多混乱。
  • @ChrisBaker 我没有尝试任何我自己不擅长正则表达式的事情。我用谷歌搜索了这个,但没有找到任何适合我需要的东西

标签: javascript regex reactjs


【解决方案1】:

这是我的看法。您需要为要替换的其他变音符号(重音字符)添加一些行。这是其他人的reference

更新:使用.normalize,而不是指定每个变音符号替换

function clearResult(){
  document.getElementById('result').value = "";
}

function stripUrl(){

  var text = document.getElementById('input').value;

  var newText = text.trim()
    .normalize('NFKD')
    .replace(/[\u0300-\u036f]/g, "")
    .replace(/[^\w/:.]/gi, '-') //clean up special characters
    .replace(/-{2,}/gi,'-'); //handle multiple dashes

  document.getElementById('result').value = newText;
}
<input id="input" type="text" value="https://google.com/)!(#$!*$ assfsd/       /mañana/aaa" style="width:500px;" onchange="clearResult()"/>
<button onclick="stripUrl()">StripUrl</button>
<br/>
<input type="text" id="result" style="width:500px;"/>

【讨论】:

  • 我用 .normalize('NFKD') 替换所有 .replace(...) 来代替变音符号,但我注意到当我输入 ça va?它显示 c-a-va 而我需要它是 ca-va 与显示 man-ana 的 mañana 相同,我该如何解决?
  • 我在上面的 ñ 替换中添加了一个附加示例。它返回“manana”。如果您为“c”变音符号添加相同的替换,它将按预期工作
  • 对我不起作用,因为我编辑了这样的代码codepen.io/Aastone/pen/gQJRWV
  • @user3359675 啊,错过了你正在使用.normalize。这种方法确保变音符号是 unicode,然后我们可以将 unicode 字符替换为对应的 ascii 字符(更好的解释 here)。否则,答案已更新
  • 感谢工作良好,如果其他人发现它并想要使用它并使用法语添加此 .replace(/[œ]/g,"oe") 以便您可以获得例如当你写 cœur 而不是 c-ur 时,单词 coeur
猜你喜欢
  • 1970-01-01
  • 2012-09-24
  • 1970-01-01
  • 2020-12-29
  • 2014-10-23
  • 1970-01-01
  • 2013-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多