fix bug: Email validation missing contains "-"

example: name1-name2@site.com, name@site1-site2.com
This commit is contained in:
Refactoring committed 2015-03-27 14:56:37 +08:00
1 parent 9803249ab1
commit 0f7ebb6c53
3 files changed
+22 -21

No files matched your search

+20 -19
View File
@@ -1,16 +1,16 @@
package lea package lea
import ( import (
"fmt"
"regexp"
"crypto/md5" "crypto/md5"
"crypto/rand" "crypto/rand"
"encoding/base64" "encoding/base64"
"encoding/hex" "encoding/hex"
"io" "fmt"
"gopkg.in/mgo.v2/bson" "gopkg.in/mgo.v2/bson"
"io"
math_rand "math/rand"
"regexp"
"time" "time"
math_rand "math/rand"
) )
// 字符串 // 字符串
@@ -58,7 +58,7 @@ func Substr(str string, start, length int) string {
func substr(str string, start, length int, isRune bool) string { func substr(str string, start, length int, isRune bool) string {
rs := []rune(str) rs := []rune(str)
rs2 := []byte(str) rs2 := []byte(str)
rl := len(rs) rl := len(rs)
if !isRune { if !isRune {
rl = len(rs2) rl = len(rs2)
@@ -124,12 +124,12 @@ func ReplaceAll(oldStr, pattern, newStr string) string {
func SubStringHTML(param string, length int, end string) string { func SubStringHTML(param string, length int, end string) string {
// 先取出<pre></pre>占位.. // 先取出<pre></pre>占位..
result := "" result := ""
// 1 // 1
n := 0 n := 0
var temp rune // 中文问题, 用rune来解决 var temp rune // 中文问题, 用rune来解决
isCode := false //是不是HTML代码 isCode := false //是不是HTML代码
isHTML := false //是不是HTML特殊字符,如&nbsp; isHTML := false //是不是HTML特殊字符,如&nbsp;
rStr := []rune(param) rStr := []rune(param)
@@ -154,7 +154,7 @@ func SubStringHTML(param string, length int, end string) string {
} }
} }
result += end result += end
// 取出所有标签 // 取出所有标签
tempResult := ReplaceAll(result, "(>)[^<>]*(<?)", "$1$2") // 把标签中间的所有内容都去掉了 tempResult := ReplaceAll(result, "(>)[^<>]*(<?)", "$1$2") // 把标签中间的所有内容都去掉了
@@ -163,13 +163,13 @@ func SubStringHTML(param string, length int, end string) string {
// 把<div class=xxx的class=xxx去掉 // 把<div class=xxx的class=xxx去掉
tempResult = ReplaceAll(tempResult, "<(/?[a-zA-Z]+)[^<>]*>", "<$1>") tempResult = ReplaceAll(tempResult, "<(/?[a-zA-Z]+)[^<>]*>", "<$1>")
// 3 只能用正则,+stack来去有结束的 // 3 只能用正则,+stack来去有结束的
// golang的正则暂不支持back reference, 以后可以用它来去掉重复的标签 // golang的正则暂不支持back reference, 以后可以用它来去掉重复的标签
p, _ := regexp.Compile("<(/?[a-zA-Z]+)[^<>]*>") // 得到所有的<div>, </div>... p, _ := regexp.Compile("<(/?[a-zA-Z]+)[^<>]*>") // 得到所有的<div>, </div>...
strs := p.FindAllString(tempResult, -1) strs := p.FindAllString(tempResult, -1)
// fmt.Println(strs) // fmt.Println(strs)
stack := make([]string, len(strs)) stack := make([]string, len(strs))
stackP := -1 stackP := -1
for _, each := range strs { for _, each := range strs {
@@ -186,16 +186,17 @@ func SubStringHTML(param string, length int, end string) string {
// 补全tag // 补全tag
if stackP != -1 { if stackP != -1 {
fmt.Println(stack[0 : stackP+1]) fmt.Println(stack[0 : stackP+1])
for _, each := range stack[0 : stackP+1] { for _, each := range stack[0 : stackP+1] {
if each[1] != '/' { if each[1] != '/' {
result += "</" + each[1:] result += "</" + each[1:]
} }
} }
} }
return result return result
} }
// 是否是合格的密码 // 是否是合格的密码
func IsGoodPwd(pwd string) (bool, string) { func IsGoodPwd(pwd string) (bool, string) {
if pwd == "" { if pwd == "" {
@@ -210,16 +211,16 @@ func IsGoodPwd(pwd string) (bool, string) {
// 是否是email // 是否是email
func IsEmail(email string) bool { func IsEmail(email string) bool {
if email == "" { if email == "" {
return false; return false
} }
ok, _ := regexp.MatchString(`^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[0-9a-zA-Z]{2,3}$`, email) ok, _ := regexp.MatchString(`^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]+$`, email)
return ok return ok
} }
// 是否只包含数字, 字母 -, _ // 是否只包含数字, 字母 -, _
func IsUsername(username string) bool { func IsUsername(username string) bool {
if username == "" { if username == "" {
return false; return false
} }
ok, _ := regexp.MatchString(`[^0-9a-zA-Z_\-]`, username) ok, _ := regexp.MatchString(`[^0-9a-zA-Z_\-]`, username)
return !ok return !ok
@@ -256,15 +257,15 @@ func RandomPwd(num int) string {
chars[j] = byte(i) chars[j] = byte(i)
j++ j++
} }
j--; j--
str := "" str := ""
math_rand.Seed(time.Now().UnixNano()) math_rand.Seed(time.Now().UnixNano())
for i := 0; i < num; i++ { for i := 0; i < num; i++ {
x := math_rand.Intn(j) x := math_rand.Intn(j)
str += string(chars[x]) str += string(chars[x])
} }
return str return str
} }
@@ -278,4 +279,4 @@ func InArray(arr []string, str string) bool {
} }
} }
return false return false
} }
+1 -1
View File
@@ -1 +1 @@
var LEA={};var Notebook={cache:{}};var Note={cache:{}};var Tag={};var Notebook={};var Share={};var Mobile={};var LeaAce={};var Converter;var MarkdownEditor;var ScrollLink;var MD;function trimLeft(str,substr){if(!substr||substr==" "){return $.trim(str)}while(str.indexOf(substr)==0){str=str.substring(substr.length)}return str}function json(str){return eval("("+str+")")}function t(){var args=arguments;if(args.length<=1){return args[0]}var text=args[0];if(!text){return text}var pattern="LEAAEL";text=text.replace(/\?/g,pattern);for(var i=1;i<=args.length;++i){text=text.replace(pattern,args[i])}return text}var tt=t;function arrayEqual(a,b){a=a||[];b=b||[];return a.join(",")==b.join(",")}function isArray(obj){return Object.prototype.toString.call(obj)==="[object Array]"}function isEmpty(obj){if(!obj){return true}if(isArray(obj)){if(obj.length==0){return true}}return false}function getFormJsonData(formId){var data=formArrDataToJson($("#"+formId).serializeArray());return data}function formArrDataToJson(arrData){var datas={};var arrObj={};for(var i in arrData){var attr=arrData[i].name;var value=arrData[i].value;if(attr.substring(attr.length-2,attr.length)=="[]"){attr=attr.substring(0,attr.length-2);if(arrObj[attr]==undefined){arrObj[attr]=[value]}else{arrObj[attr].push(value)}continue}datas[attr]=value}return $.extend(datas,arrObj)}function formSerializeDataToJson(formSerializeData){var arr=formSerializeData.split("&");var datas={};var arrObj={};for(var i=0;i<arr.length;++i){var each=arr[i].split("=");var attr=decodeURI(each[0]);var value=decodeURI(each[1]);if(attr.substring(attr.length-2,attr.length)=="[]"){attr=attr.substring(0,attr.length-2);if(arrObj[attr]==undefined){arrObj[attr]=[value]}else{arrObj[attr].push(value)}continue}datas[attr]=value}return $.extend(datas,arrObj)}function _ajaxCallback(ret,successFunc,failureFunc){if(ret===true||ret=="true"||typeof ret=="object"){if(ret&&typeof ret=="object"){if(ret.Msg=="NOTLOGIN"){alert("你还没有登录, 请先登录!");return}}if(typeof successFunc=="function"){successFunc(ret)}}else{if(typeof failureFunc=="function"){failureFunc(ret)}else{alert("error!")}}}function _ajax(type,url,param,successFunc,failureFunc,async){log("-------------------ajax:");log(url);log(param);if(typeof async=="undefined"){async=true}else{async=false}return $.ajax({type:type,url:url,data:param,async:async,success:function(ret){_ajaxCallback(ret,successFunc,failureFunc)},error:function(ret){_ajaxCallback(ret,successFunc,failureFunc)}})}function ajaxGet(url,param,successFunc,failureFunc,async){return _ajax("GET",url,param,successFunc,failureFunc,async)}function ajaxPost(url,param,successFunc,failureFunc,async){_ajax("POST",url,param,successFunc,failureFunc,async)}function ajaxPostJson(url,param,successFunc,failureFunc,async){log("-------------------ajaxPostJson:");log(url);log(param);if(typeof async=="undefined"){async=true}else{async=false}$.ajax({url:url,type:"POST",contentType:"application/json; charset=utf-8",datatype:"json",async:async,data:JSON.stringify(param),success:function(ret,stats){_ajaxCallback(ret,successFunc,failureFunc)},error:function(ret){_ajaxCallback(ret,successFunc,failureFunc)}})}function findParents(target,selector){if($(target).is(selector)){return $(target)}var parents=$(target).parents();for(var i=0;i<parents.length;++i){log(parents.eq(i));if(parents.eq(i).is(selector)){return parents.seq(i)}}return null}function getVendorPrefix(){var body=document.body||document.documentElement,style=body.style,vendor=["webkit","khtml","moz","ms","o"],i=0;while(i<vendor.length){if(typeof style[vendor[i]+"Transition"]==="string"){return vendor[i]}i++}}function editorIframeTabindex(index){var $i=$("#editorContent");$i.attr("tabindex",index);setTimeout(function(){$i.attr("tabindex",index)},500);setTimeout(function(){$i.attr("tabindex",index)},1e3)}LEA.isM=false;LEA.isMarkdownEditor=function(){return LEA.isM};function switchEditor(isMarkdown){LEA.isM=isMarkdown;if(!isMarkdown){$("#editor").show();$("#mdEditor").css("z-index",1).hide();editorIframeTabindex(2);$("#wmd-input").attr("tabindex",3);$("#leanoteNav").show()}else{$("#mdEditor").css("z-index",3).show();editorIframeTabindex(3);$("#wmd-input").attr("tabindex",2);$("#leanoteNav").hide()}}var previewToken="<div style='display: none'>FORTOKEN</div>";var clearIntervalForSetContent;function setEditorContent(content,isMarkdown,preview){if(!content){content=""}if(clearIntervalForSetContent){clearInterval(clearIntervalForSetContent)}if(!isMarkdown){$("#editorContent").html(content);if(typeof tinymce!="undefined"&&tinymce.activeEditor){var editor=tinymce.activeEditor;editor.setContent(content);editor.undoManager.clear()}else{clearIntervalForSetContent=setTimeout(function(){setEditorContent(content,false)},100)}}else{if(MD){MD.setContent(content)}else{clearIntervalForSetContent=setTimeout(function(){setEditorContent(content,true)},100)}}}function previewIsEmpty(preview){if(!preview||preview.substr(0,previewToken.length)==previewToken){reLine truncated var LEA={};var Notebook={cache:{}};var Note={cache:{}};var Tag={};var Notebook={};var Share={};var Mobile={};var LeaAce={};var Converter;var MarkdownEditor;var ScrollLink;var MD;function trimLeft(str,substr){if(!substr||substr==" "){return $.trim(str)}while(str.indexOf(substr)==0){str=str.substring(substr.length)}return str}function json(str){return eval("("+str+")")}function t(){var args=arguments;if(args.length<=1){return args[0]}var text=args[0];if(!text){return text}var pattern="LEAAEL";text=text.replace(/\?/g,pattern);for(var i=1;i<=args.length;++i){text=text.replace(pattern,args[i])}return text}var tt=t;function arrayEqual(a,b){a=a||[];b=b||[];return a.join(",")==b.join(",")}function isArray(obj){return Object.prototype.toString.call(obj)==="[object Array]"}function isEmpty(obj){if(!obj){return true}if(isArray(obj)){if(obj.length==0){return true}}return false}function getFormJsonData(formId){var data=formArrDataToJson($("#"+formId).serializeArray());return data}function formArrDataToJson(arrData){var datas={};var arrObj={};for(var i in arrData){var attr=arrData[i].name;var value=arrData[i].value;if(attr.substring(attr.length-2,attr.length)=="[]"){attr=attr.substring(0,attr.length-2);if(arrObj[attr]==undefined){arrObj[attr]=[value]}else{arrObj[attr].push(value)}continue}datas[attr]=value}return $.extend(datas,arrObj)}function formSerializeDataToJson(formSerializeData){var arr=formSerializeData.split("&");var datas={};var arrObj={};for(var i=0;i<arr.length;++i){var each=arr[i].split("=");var attr=decodeURI(each[0]);var value=decodeURI(each[1]);if(attr.substring(attr.length-2,attr.length)=="[]"){attr=attr.substring(0,attr.length-2);if(arrObj[attr]==undefined){arrObj[attr]=[value]}else{arrObj[attr].push(value)}continue}datas[attr]=value}return $.extend(datas,arrObj)}function _ajaxCallback(ret,successFunc,failureFunc){if(ret===true||ret=="true"||typeof ret=="object"){if(ret&&typeof ret=="object"){if(ret.Msg=="NOTLOGIN"){alert("你还没有登录, 请先登录!");return}}if(typeof successFunc=="function"){successFunc(ret)}}else{if(typeof failureFunc=="function"){failureFunc(ret)}else{alert("error!")}}}function _ajax(type,url,param,successFunc,failureFunc,async){log("-------------------ajax:");log(url);log(param);if(typeof async=="undefined"){async=true}else{async=false}return $.ajax({type:type,url:url,data:param,async:async,success:function(ret){_ajaxCallback(ret,successFunc,failureFunc)},error:function(ret){_ajaxCallback(ret,successFunc,failureFunc)}})}function ajaxGet(url,param,successFunc,failureFunc,async){return _ajax("GET",url,param,successFunc,failureFunc,async)}function ajaxPost(url,param,successFunc,failureFunc,async){_ajax("POST",url,param,successFunc,failureFunc,async)}function ajaxPostJson(url,param,successFunc,failureFunc,async){log("-------------------ajaxPostJson:");log(url);log(param);if(typeof async=="undefined"){async=true}else{async=false}$.ajax({url:url,type:"POST",contentType:"application/json; charset=utf-8",datatype:"json",async:async,data:JSON.stringify(param),success:function(ret,stats){_ajaxCallback(ret,successFunc,failureFunc)},error:function(ret){_ajaxCallback(ret,successFunc,failureFunc)}})}function findParents(target,selector){if($(target).is(selector)){return $(target)}var parents=$(target).parents();for(var i=0;i<parents.length;++i){log(parents.eq(i));if(parents.eq(i).is(selector)){return parents.seq(i)}}return null}function getVendorPrefix(){var body=document.body||document.documentElement,style=body.style,vendor=["webkit","khtml","moz","ms","o"],i=0;while(i<vendor.length){if(typeof style[vendor[i]+"Transition"]==="string"){return vendor[i]}i++}}function editorIframeTabindex(index){var $i=$("#editorContent");$i.attr("tabindex",index);setTimeout(function(){$i.attr("tabindex",index)},500);setTimeout(function(){$i.attr("tabindex",index)},1e3)}LEA.isM=false;LEA.isMarkdownEditor=function(){return LEA.isM};function switchEditor(isMarkdown){LEA.isM=isMarkdown;if(!isMarkdown){$("#editor").show();$("#mdEditor").css("z-index",1).hide();editorIframeTabindex(2);$("#wmd-input").attr("tabindex",3);$("#leanoteNav").show()}else{$("#mdEditor").css("z-index",3).show();editorIframeTabindex(3);$("#wmd-input").attr("tabindex",2);$("#leanoteNav").hide()}}var previewToken="<div style='display: none'>FORTOKEN</div>";var clearIntervalForSetContent;function setEditorContent(content,isMarkdown,preview){if(!content){content=""}if(clearIntervalForSetContent){clearInterval(clearIntervalForSetContent)}if(!isMarkdown){$("#editorContent").html(content);if(typeof tinymce!="undefined"&&tinymce.activeEditor){var editor=tinymce.activeEditor;editor.setContent(content);editor.undoManager.clear()}else{clearIntervalForSetContent=setTimeout(function(){setEditorContent(content,false)},100)}}else{if(MD){MD.setContent(content)}else{clearIntervalForSetContent=setTimeout(function(){setEditorContent(content,true)},100)}}}function previewIsEmpty(preview){if(!preview||preview.substr(0,previewToken.length)==previewToken){reLine truncated
+1 -1
View File
@@ -759,7 +759,7 @@ function post(url, param, func, btnId) {
// 是否是正确的email // 是否是正确的email
function isEmail(email) { function isEmail(email) {
var myreg = /^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+\.[0-9a-zA-Z]{2,3}$/; var myreg = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]+$/;
return myreg.test(email); return myreg.test(email);
} }