# 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');
}
}

Javascript Regexp match and replace的更多相关文章

  1. JavaScript中String对象的match()、replace() 配合正则表达式使用

    正则表达式由来已久,查找替换功能非常强大,但模板难记复杂. JavaScript中String对象的match().replace()这2个方法都要使用正则表达式的模板.当模板内容与字符串不相匹配时, ...

  2. JavaScript中字符串的match与replace方法

    1.match方法 match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配. match()方法的返回值为:存放匹配结果的数组. 2.replace方法 replace() 方 ...

  3. JavaScript RegExp 基础详谈

    前言: 正则对于一个码农来说是最基础的了,而且在博客园中,发表关于讲解正则表达式的技术文章,更是数不胜数,各有各的优点,但是就是这种很基础的东西,如果我们不去真正仔细研究.学习.掌握,而是抱着需要的时 ...

  4. JavaScript中String.prototype.replace() 方法的使用

    摘抄于:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/replace ...

  5. JavaScript RegExp Object 正则表达式入门

    什么是 RegExp? RegExp 是regular expression的缩写. RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具. 当您检索某个文本时,可以使用一种模式来描述 ...

  6. [转]JavaScript RegExp 对象参考手册

    JavaScript RegExp 对象参考手册 RegExp 对象 RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具. 直接量语法 /pattern/attributes 创建 ...

  7. 【timeisprecious】【JavaScript 】JavaScript RegExp 对象

    JavaScript>RegExp正则表达式 1 .From Runnob JavaScript RegExp 对象(概览) JavaScript RegExp 对象(教程) RegExp 对象 ...

  8. JavaScript RegExp 正则表达式基础详谈

    前言: 正则对于一个码农来说是最基础的了,而且在博客园中,发表关于讲解正则表达式的技术文章,更是数不胜数,各有各的优点,但是就是这种很基础的东西,如果我们不去真正仔细研究.学习.掌握,而是抱着需要的时 ...

  9. 浏览器端-W3School-JavaScript:JavaScript RegExp 对象

    ylbtech-浏览器端-W3School-JavaScript:JavaScript RegExp 对象 1.返回顶部 1. JavaScript RegExp 对象 RegExp 对象 RegEx ...

随机推荐

  1. 移动端公共css样式

    @media screen and ( min-width: 319px){html{ font-size: 100px;}}@media screen and ( min-width: 359px) ...

  2. COLUMN_VALUE Pseudocolumn

    With below three situation, we can use the pseudocolumn column_value to refer the column value. an X ...

  3. Java 对象内存分配与回收

    JVM内存区域模型: * 程序计数器,内存区域极小,是当前线程的字节码执行行号指示器: * 虚拟机栈.本地方法栈,即平时所说的“栈”,是虚拟机用来执行方法(包括Java.非Java方法)时,使用的临时 ...

  4. 第八篇 Integration Services:高级工作流管理

    本篇文章是Integration Services系列的第八篇,详细内容请参考原文. 简介在前面两篇文章,我们创建了一个新的SSIS包,学习了SSIS中的脚本任务和优先约束,并检查包的MaxConcu ...

  5. RouterOS软路由设置固定IP+PPPOE

    内网: IP:192.168.10.254/24 网关:192.168.10.254 外网: IP:218.17.172.17/28 子网掩码:255.255.255.240 网关:218.17.17 ...

  6. MIConvexHull

    http://miconvexhull.codeplex.com/ 可以生成2.3维的最小凸包.可以进行狄洛尼三角剖分,生成Voronoi多边形. This project is a convex h ...

  7. Web开发学习

    这几天天天学习网络开发的一些东西,接触了好些概念.原本打算自己弄个个人博客,BlogEngine.net已经做的很好了,可以直接拿来用而且源码开放.做的很不错,是WebForm的.本来打算好好学习一下 ...

  8. CentOS下netstat + awk 查看tcp的网络连接状态

    执行以下命令: #netstat -n | awk ‘/^tcp/ {++state[$NF]} END {for(key in state) print key."\t".sta ...

  9. 高级选择器querySelector和querySelectorAll

    Javascript新提供的querySelector和querySelectorAll方法,是仿照CSS选择器功能编写的 querySelector 功能:该方法返回满足条件的单个元素.按照深度优先 ...

  10. Swift实战-豆瓣电台(四)歌曲列表的展现

    观看地址 http://v.youku.com/v_show/id_XNzMwNDE0OTA4.html 这节的主要内容是如何利用cell展现获取到的数据. 首先申明两个数组来储存我们获取到的数据 v ...