愚蠢的引号变成聪明的引号Javascript问题
Dumb quotes into smart quotes Javascript issue
本文关键字:Javascript 问题 更新时间:2023-09-26
我有一些JavaScript代码,可以在contenteditable
中将哑引号转换为智能引号。
当你在一行的开头添加哑引号时,问题就会出现——它们只会闭合。例如:
”dumb quotes” instead of “dumb quotes”
试用演示:http://jsfiddle.net/7rcF2/
我使用的代码:
function replace(a) {
a = a.replace(/(^|[-'u2014's('["])'/g, "$1'u2018"); // opening singles
a = a.replace(/'/g, "'u2019"); // closing singles & apostrophes
a = a.replace(/(^|[-'u2014/'[('u2018's])"/g, "$1'u201c"); // opening doubles
a = a.replace(/"/g, "'u201d"); // closing doubles
a = a.replace(/--/g, "'u2014"); // em-dashes
return a };
有什么想法吗?谢谢
p。S.我讨厌正则表达式…
试试这个:
var a = '"dumb quotes" instead -- of "dumb quotes", fixed it''s';
a = a.replace(/''b/g, "'u2018") // Opening singles
.replace(/'b'/g, "'u2019") // Closing singles
.replace(/"'b/g, "'u201c") // Opening doubles
.replace(/'b"/g, "'u201d") // Closing doubles
.replace(/--/g, "'u2014") // em-dashes
.replace(/'b'u2018'b/g, "'"); // And things like "it's" back to normal.
// Note the missing `;` in these lines. I'm chaining the `.replace()` functions.
输出:
'“dumb quotes” instead — of “dumb quotes”, fixed it's'
基本上,你在寻找单词边界:'b
这是一个更新的fiddle
如果您想在客户端完成所有工作,可以使用smartquotes.js库将页面上的所有哑引号转换为智能引号。或者,您可以使用库本身的regex。
以下是旧版本代码的实现:
function smartquotesString(str) {
return str
.replace(/'''/g, ''u2034') // triple prime
.replace(/('W|^)"('S)/g, '$1'u201c$2') // beginning "
.replace(/('u201c[^"]*)"([^"]*$|[^'u201c"]*'u201c)/g, '$1'u201d$2') // ending "
.replace(/([^0-9])"/g,'$1'u201d') // remaining " at end of word
.replace(/''/g, ''u2033') // double prime
.replace(/('W|^)'('S)/g, '$1'u2018$2') // beginning '
.replace(/([a-z])'([a-z])/ig, '$1'u2019$2') // conjunction's possession
.replace(/(('u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1'u2019$3') // ending '
.replace(/('u2018)([0-9]{2}[^'u2019]*)('u2018([^0-9]|$)|$|'u2019[a-z])/ig, ''u2019$2$3') // abbrev. years like '93
.replace(/('B|^)'u2018(?=([^'u2019]*'u2019'b)*([^'u2019'u2018]*'W['u2019'u2018]'b|[^'u2019'u2018]*$))/ig, '$1'u2019') // backwards apostrophe
.replace(/'/g, ''u2032');
};
相关文章:
- javascript问题正文样式
- 将代码放入click函数时出现javascript问题
- 奇怪的javascript问题
- 选中复选框的Jquery/Javascript问题使用输入框操作将行从一个表添加到另一个表
- 多上传的JavaScript问题
- 使用YouTube iFrame API的IE中的JavaScript问题
- 关于函数的Javascript问题 - IIFE
- Javascript问题与下拉菜单上的单击事件有关
- JavaScript 问题 - 意外的令牌 (.
- Chrome 中的 JavaScript 问题
- 在javascript问题中应用复合css规则
- Javascript问题,flexslider脚本未加载
- document.write和document.innerHTML以及其他javascript问题之间有什么区别
- jQuery到纯javaScript问题
- javascript问题后的onblur和onfocus
- 谷歌地图API和JavaScript问题:-(
- 第三方javascript问题
- javascript问题中的全局变量
- 嵌套if的javascript问题
- 绑定的Javascript问题