我需要匹配文本文件中的所有句子结尾标点符号,使其通过json格式的ajax传递到html页面,同时保留定界符并将<p>
标记附加到每个句子。
当前代码如下:
var xhr = new XMLHttpRequest();
xhr.onload = function() {
if(xhr.status === 200) {
responseObject = JSON.parse(xhr.responseText);
var newContent = '';
// text file html encasing
newContent += '<p>' + responseObject.content + '</p>';
// regex
matchedPunctuation = newContent.match(/.*?[?!.]/g);
// add element
document.getElementById('myptag').innerHTML = matchedPunctuation.join('<p>');
}
};
xhr.open('GET', 'http://127.0.0.1:5000/jsonstory', true);
xhr.send(null);
当我的句子如下时,这使我失败:
短文本文件示例.......今天是美好的一天。戴夫说:“是的。”
上面的代码将<p>
标记正确地添加到第一句,该标记将直接在句点之后但在下一句开始之前。
第二句将它们添加到句号和引号.<p></p>
"<p></p>
之间,这将引号与应保留在我的html文件中的句子分开放置。任何想法或解决方案将不胜感激!谢谢。
答案 0 :(得分:0)
尝试使用此正则表达式.*?[?!.]"?
如果存在双引号,则"?
使其成为可选要求。如果是,它将首先使用它进行比赛,否则,它将继续进行。
希望这会有所帮助。
var xhr = new XMLHttpRequest();
xhr.onload = function() {
if(xhr.status === 200) {
responseObject = JSON.parse(xhr.responseText);
var newContent = '';
// text file html encasing
newContent += '<p>' + responseObject.content + '</p>';
// regex
matchedPunctuation = newContent.match(/.*?[?!.]"?/g);
// add element
document.getElementById('myptag').innerHTML = matchedPunctuation.join('<p>');
}
};
xhr.open('GET', 'http://127.0.0.1:5000/jsonstory', true);
xhr.send(null);