- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
HTML/概念:
<textarea id="input"></textarea>
<button onclick="format()">submit</button>
<textarea id="output"></textarea>
我经常需要为客户将文档转换为 html,而且我厌倦了必须查找/替换+手动更改/添加适当的 HTML。所以我寻找我梦想的格式化程序,但找不到任何东西(如果你知道合适的格式化程序,请发帖),所以我想我只需用 javascript 编写自己的格式化程序即可。这非常简单,但我不熟悉正则表达式并且遇到了一些麻烦,这是我能够使用在其他帖子中找到的正则表达式拼凑而成的内容:
var email = /(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})/gim;
var url = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
var br = /(\r\n|\n|\r)/gm;
function format() {
var input = $('#input').val();
var check1 = input.replace(br,"<br>");
var check2 = check1.replace(url,'<a href="$1" target="blank">$1</a>');
var check3 = check2.replace(email, '<a href="mailto:$1">$1</a>' );
var check4 = check3.replace(etc, ...);
var output = check4;
$('#output').val(output);
}
我还有几件事想做,但似乎无法找到/编写正确的正则表达式,这些是:
查找特定字符(©、“、”、ñ 等)并将其替换为适当的字符/实体,即:
[© , " , " , ñ , etc]
如果这个问题得到解答,我很抱歉,但我似乎找不到这些位(也许我问了错误的问题?),任何帮助查找粗体/斜体以及替换特定字符/实体的帮助都会很棒!另外,如果我以错误的方式处理这件事,请告诉我。非常感谢!
最佳答案
嗯,正如@sourcejedi 指出的那样,粗体/斜体似乎并不是一个真正的选择。但我想出了如何用正则表达式查找/替换我需要的所有其他内容。再说一次,这是一个非常具体的任务,我碰巧必须经常做(将通常很长的[通常是西类牙语和重音字符]谷歌文档文件转换为html),以防其他人处于相同的情况/类似的船,这就是我最终得到的:
HTML:
<textarea id="input" cols="50" rows="10"></textarea><br>
<button onclick="format()">format!</button><br>
<textarea id="output" cols="50" rows="10"></textarea><br>
Javascript:
function format() {
var input = document.getElementById('input').value; // get input txt
var output = document.getElementById('output'); //target ouput txt box
var i = input;
var email = /(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})/gim;
var url = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
var br = /(\r\n|\n|\r)/gm;
i = i.replace(br, '<br>'+'\n');
i = i.replace(url, '<a href="$1" target="blank">$1</a>');
i = i.replace(email, '<a href="mailto:$1">$1</a>' );
i = i.replace( /\u2018|\u2019|\u201A|\uFFFD/g, "'" );
i = i.replace( /\u201c|\u201d|\u201e/g, '"' );
i = i.replace( /\u02C6/g, '^' );
i = i.replace( /\u2039/g, '<' );
i = i.replace( /\u203A/g, '>' );
i = i.replace( /\u2013/g, '-' );
i = i.replace( /\u2013/g, '-' );
i = i.replace( /\u2022/g, '<span style="padding-left:15px;">&'+'#8226;</span>' );
i = i.replace( /\u00C9/g, '&'+'Eacute;' ); // E w/accent
i = i.replace( /\u00CD/g, '&'+'Iacute;' ); // I w/accent
i = i.replace( /\u00D3/g, '&'+'Oacute;' ); // O w/accent
i = i.replace( /\u00DA/g, '&'+'Uacute;' ); // U w/accent
i = i.replace( /\u00DD/g, '&'+'Yacute;' ); // Y w/accent
i = i.replace( /\u00D1/g, '&'+'Ntilde;' ); // Nye
i = i.replace( /\u00E1/g, '&'+'aacute;' ); // a w/accent
i = i.replace( /\u00E9/g, '&'+'eacute;' ); // e w/accent
i = i.replace( /\u00ED/g, '&'+'iacute;' ); // i w/accent
i = i.replace( /\u00F3/g, '&'+'oacute;' ); // o w/accent
i = i.replace( /\u00FA/g, '&'+'uacute;' ); // u w/accent
i = i.replace( /\u00FD/g, '&'+'yacute;' ); // y w/accent
i = i.replace( /\u00F1/g, '&'+'ntilde;' ); // nye
i = i.replace( /\u2014/g, '&'+'#8212;' ); // mdash
i = i.replace( /\u2026/g, '...' ); // elipses
i = i.replace( /\u00A9/g, '&'+'#169;' ); // copyright logo
i = i.replace( /\u00AE/g, '&'+'#174;' ); // restricted logo
i = i.replace( /\u2122/g, '&'+'#8482;' ); // trade mark logo
i = i.replace( /\u00BC/g, '&'+'#188;' ); // 1/4
i = i.replace( /\u00BD/g, '&'+'#189;' ); // 1/2
i = i.replace( /\u00BE/g, '&'+'#190;' ); // 3/4
i = i.replace(/[\u02DC|\u00A0]/g, " "); // speacial spaces characters
output.innerHTML = i;
}
...对于那些真正感兴趣的人,这里有一个带有可调整参数的版本(预加载电子邮件、使用自定义 CSS 添加包装器 div、target=blank 切换、mailto 切换、缩小等) http://jsfiddle.net/N4vrE/
关于javascript:查找/替换正则表达式帮助 - 粗体、斜体和特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12165530/
我正在用 yacc/bison 编写一个简单的计算器。 表达式的语法看起来有点像这样: expr : NUM | expr '+' expr { $$ = $1 + $3; } | expr '-'
我开始学习 lambda 表达式,并在以下情况下遇到了以下语句: interface MyNumber { double getValue(); } MyNumber number; nu
这两个 Linq 查询有什么区别: var result = ResultLists().Where( c=> c.code == "abc").FirstOrDefault(); // vs. va
如果我们查看 draft C++ standard 5.1.2 Lambda 表达式 段 2 说(强调我的 future ): The evaluation of a lambda-expressio
我使用的是 Mule 4.2.2 运行时、studio 7.5.1 和 Oracle JDK 1.8.0_251。 我在 java 代码中使用 Lambda 表达式,该表达式由 java Invoke
我是 XPath 的新手。我有网页的html源 http://london.craigslist.co.uk/com/1233708939.html 现在我想从上面的页面中提取以下数据 完整日期 电子
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
我将如何编写一个 Cron 表达式以在每天上午 8 点和下午 3:30 触发?我了解如何创建每天触发一次的表达式,而不是在多个设定时间触发。提前致谢 最佳答案 你应该只使用两行。 0 8 * * *
这个问题已经有答案了: What do 3 dots next to a parameter type mean in Java? (9 个回答) varargs and the '...' argu
我是 python 新手,在阅读 BeautifulSoup 教程时,我不明白这个表达式“[x for x in titles if x.findChildren()][:-1]”我不明白?你能解释一
(?:) 这是一个有效的 ruby 正则表达式,谁能告诉我它是什么意思? 谢谢 最佳答案 正如其他人所说,它被用作正则表达式的非捕获语法,但是,它也是正则表达式之外的有效 ruby 语法。 在
这个问题在这里已经有了答案: Why does ++[[]][+[]]+[+[]] return the string "10"? (10 个答案) 关闭 8 年前。 谁能帮我处理这个 JavaSc
这个问题在这里已经有了答案: What is the "-->" operator in C++? (29 个答案) Java: Prefix/postfix of increment/decrem
这个问题在这里已经有了答案: List comprehension vs. lambda + filter (16 个答案) 关闭 10 个月前。 我不确定我是否需要 lambda 或其他东西。但是,
C 中的 assert() 函数工作原理对我来说就像一片黑暗的森林。根据这里的答案https://stackoverflow.com/a/1571360 ,您可以使用以下构造将自定义消息输出到您的断言
在this页,John Barnes 写道: If the conditional expression is the argument of a type conversion then effec
我必须创建一个调度程序,它必须每周从第一天上午 9 点到第二天晚上 11 点 59 分运行 2 天(星期四和星期五)。为此,我需要提供一个 cron 表达式。 0-0 0-0 9-23 ? * THU
我正在尝试编写一个 Linq 表达式来检查派生类中的属性,但该列表由来自基类的成员组成。下面的示例代码。以“var list”开头的 Process 方法的第二行无法编译,但我不确定应该使用什么语法来
此 sed 表达式将输入字符串转换为两行输出字符串。两条输出行中的每一行都由输入的子串组成。第一行需要转换成大写: s:random_stuff\(choice1\|choice2\){\([^}]*
我正在使用 Quartz.Net 在我的应用程序中安排我的工作。我只是想知道是否可以为以下场景构建 CRON 表达式: Every second between 2:15AM and 5:20AM 最
我是一名优秀的程序员,十分优秀!