Javascript Regexp match and replace

时间:2023-03-09 23:00:19
Javascript Regexp match and replace
# add a new article reference to database
function addnewpub() {
var year = $("input#year").val();
var articlelink = $("input#articlelink").val();
var pdflink = $("input#pdflink").val();
var reference = $("input#reference").val();
if (!!(year && articlelink && pdflink && reference)) {
if (! isURL(articlelink) ){
$(this).next('.status').html("Article Link Invalid");
$(this).next('.status').css('color', '#F50162');
$('input#articlelink').focus().css('box-shadow','0 0 12px #FEBB2D inset');
return;
}
if (!pdflink.match(/https?:\/\/renlab\.fudan\.edu\.cn\/renlab\/.*\.pdf$/)) {
$(this).next('.status').html("PDF Link Invalid");
$(this).next('.status').css('color', '#F50162');
$('input#pdflink').focus().css('box-shadow','0 0 12px #FEBB2D inset');
return;
}
if (!year.match(/^[2-3][0-9][0-9][0-9]$/)) {
$(this).next('.status').html("Year Invalid");
$(this).next('.status').css('color', '#F50162');
$('input#year').focus().css('box-shadow','0 0 12px #FEBB2D inset');
return;
}
if (! (reference.match(/Ren\s+G[*#]?/) &&
( reference.match(/(\(\d{4}\)(?:\s+)?(?:[^\.]+\.)(?:\s+)?)([A-Za-z ]+)(\.?(?:\s+)?)/) ||
reference.match(/(\(\d{4}\)(?:\.)?(?:\s+)?(?:[^\.]+\.)(?:\s+)?)([A-Za-z \.]+\.?)((?:\s+)?(?:DOI|doi))/) ) ) ){
$(this).next('.status').html("Reference Invalid");
$(this).next('.status').css('color', '#F50162');
$('input#reference').focus().css('box-shadow','0 0 12px #FEBB2D inset');
return;
}
var newref = reference.replace(/Ren\s+G[*#]?/, "<span class='gd_r'>$&</span>");
newref = newref.replace(/(\(\d{4}\)(?:\s+)?(?:[^\.]+\.)(?:\s+)?)([A-Za-z ]+)(\.?(?:\s+)?)/, "$1<span class='gd_r'>$2</span>$3");
reference = newref.replace(/(\(\d{4}\)(?:\.)?(?:\s+)?(?:[^\.]+\.)(?:\s+)?)([A-Za-z \.]+\.?)((?:\s+)?(?:DOI|doi))/, "$1<span class='gd_p'>$2</span>$3");
$(this).next('.status').after("<div class='preview'></div>").html(reference); $.get('/wp-content/themes/yusi1.0/misc/addnewpub.php', {
'year': year,
'articlelink': articlelink,
'pdflink': pdflink,
'reference': reference
}).done(function(data) {
$(this).next('.status').html('Added Success');
$(this).next('.status').css('color', '#01B0F5');
$("input#year").val(date('o'));
$("input#articlelink").val(' ');
$("input#pdflink").val(' ');
$("input#reference").val(' ');
});
}
else {
$(this).next('.status').html("Invaid Input, all Required");
$(this).next('.status').css('color', '#F50162');
}
}