正則表達(dá)式 匹配至少有一個(gè)非空白字符并且不超過(guò)指定長(zhǎng)度
更新時(shí)間:2011年11月27日 22:55:26 作者:
最近需要用到一個(gè)驗(yàn)證,規(guī)則為:至少有一個(gè)非空白字符并且不超過(guò)指定長(zhǎng)度,想用正則表達(dá)式來(lái)處理,上網(wǎng)搜了一下,發(fā)現(xiàn)其他人也有和我一樣的需求,并且有高手給了幾個(gè)很精彩的解決方案,現(xiàn)將網(wǎng)上的解決方案整理一下,以備其他有相同需求的人參考
chinmo 逆向思維解決方案
<script type="text/javascript">
/**
* 至少有一個(gè)非空白字符并且不超過(guò)6個(gè)字符的正則表達(dá)式
*
* 作者:chinmo
* 整理:http://www.CodeBit.cn
* 來(lái)源:http://topic.csdn.net/u/20090207/18/ffa003ed-ecd4-40e0-b81f-36aa1fe46d85.html#r_55136904
*/
var pattern = /^[\s]{0,}$|^[\w\s]{7,}$/g;
var str = "";
var str1 = " ";
var str2 = "a";
var str3 = "abcdefgabcdefgabcdefgabcdefgg";
var str4 = " a ";
document.write(!pattern.test(str))
document.write(!pattern.test(str1))
document.write(!pattern.test(str2))
document.write(!pattern.test(str3))
document.write(!pattern.test(str4))
</script>
正則表達(dá)式規(guī)則分析:
^[\s]{0,}$ :整個(gè)字符串為空或者都是空白字符
^[\w\s]{7,}$ : 整個(gè)字符串長(zhǎng)度大于6
作者采用逆向思維,通過(guò)匹配不符合條件的情況,再通過(guò)取反(注意每個(gè) document.write 中的感嘆號(hào))來(lái)實(shí)現(xiàn)要求達(dá)到的效果。
JK_10000 逆向思維解決方案簡(jiǎn)化版
<script type="text/javascript">
/**
* 至少有一個(gè)非空白字符并且不超過(guò)6個(gè)字符的正則表達(dá)式
*
* 作者:JK_10000
* 整理:http://www.CodeBit.cn
* 來(lái)源:http://topic.csdn.net/u/20090207/18/ffa003ed-ecd4-40e0-b81f-36aa1fe46d85.html#rt_55145516
*/
var pattern = /.{7}|^\s*$/g;
var str = "";
var str1 = " ";
var str2 = "a";
var str3 = "www.CodeBit.cn";
var str4 = " a ";
document.write(!pattern.test(str))
document.write(!pattern.test(str1))
document.write(!pattern.test(str2))
document.write(!pattern.test(str3))
document.write(!pattern.test(str4))
</script>
正則表達(dá)式規(guī)則分析:
.{7} : 整個(gè)字符串長(zhǎng)度大于6,注意:這里的 . 匹配任意字符
^\s*$ :整個(gè)字符串為空或者都是空白字符
JK_10000 正向思維解決方案
<script type="text/javascript">
/**
* 至少有一個(gè)非空白字符并且不超過(guò)6個(gè)字符的正則表達(dá)式
*
* 作者:JK_10000
* 整理:http://www.CodeBit.cn
* 來(lái)源:http://hi.baidu.com/jkisjk/blog/item/b54a7a3d1c7ce3c09f3d629b.html
* 來(lái)源:http://topic.csdn.net/u/20090207/18/ffa003ed-ecd4-40e0-b81f-36aa1fe46d85.html#rt_55145611
*/
var pattern = /^(?!.{7}|^\s*$)/g;
var str = "";
var str1 = " ";
var str2 = "a";
var str3 = "www.CodeBit.cn";
var str4 = " a ";
document.write(pattern.test(str))
document.write(pattern.test(str1))
document.write(pattern.test(str2))
document.write(pattern.test(str3))
document.write(pattern.test(str4))
</script>
正則表達(dá)式規(guī)則分析:
.{7} : 整個(gè)字符串長(zhǎng)度大于6,注意:這里的 . 匹配任意字符
^\s*$ :整個(gè)字符串為空或者都是空白字符
作者使用了正則表達(dá)式的順序否定環(huán)視 ,指明開(kāi)始(^)后面不能有7個(gè)及以上字符,或者整個(gè)字符串為空(\s 沒(méi)有的情況下,^$表示內(nèi)容為空),或者全部都是空白字符 (\s*)。
不過(guò),該正則表達(dá)式可以將環(huán)視條件中的 ^ 去掉,即 /^(?!.{7}|\s*$)/g , 因?yàn)橐?guī)則一開(kāi)始就已經(jīng)有了一個(gè) ^ 。
<script type="text/javascript">
/**
* 至少有一個(gè)非空白字符并且不超過(guò)6個(gè)字符的正則表達(dá)式
*
* 作者:JK_10000
* 整理:http://www.CodeBit.cn
* 來(lái)源:http://hi.baidu.com/jkisjk/blog/item/b54a7a3d1c7ce3c09f3d629b.html
* 來(lái)源:http://topic.csdn.net/u/20090207/18/ffa003ed-ecd4-40e0-b81f-36aa1fe46d85.html#rt_55145611
*/
var pattern = /^(?!.{7}|\s*$)/g;
var str = "";
var str1 = " ";
var str2 = "a";
var str3 = "www.CodeBit.cn";
var str4 = " a ";
document.write(pattern.test(str))
document.write(pattern.test(str1))
document.write(pattern.test(str2))
document.write(pattern.test(str3))
document.write(pattern.test(str4))
</script>
wc 發(fā)布在 JK 博客評(píng)論中的方案
<script type="text/javascript">
/**
* 至少有一個(gè)非空白字符并且不超過(guò)6個(gè)字符的正則表達(dá)式
*
* 作者:wc
* 整理:http://www.CodeBit.cn
* 來(lái)源:http://hi.baidu.com/jkisjk/blog/item/b54a7a3d1c7ce3c09f3d629b.html
*/
var pattern = /^(?=.*?\S)[\s\S]{0,6}$/g;
var str = "";
var str1 = " ";
var str2 = "a";
var str3 = "www.CodeBit.cn";
var str4 = " a ";
document.write(pattern.test(str))
document.write(pattern.test(str1))
document.write(pattern.test(str2))
document.write(pattern.test(str3))
document.write(pattern.test(str4))
</script>
正則表達(dá)式規(guī)則分析:
(?=.*?\S) :肯定順序環(huán)視,指定任意多個(gè)任意字符后面有個(gè)非空白字符
[\s\S]{0,6} : 6個(gè)以內(nèi)的空白或者非空白字符
在 Javascript 中使用全局匹配修飾符 g 的時(shí)候要特別注意,可參考本站的另外一篇文章:Javascript 中使用 exec 進(jìn)行正則表達(dá)式全局匹配時(shí)的注意事項(xiàng)
復(fù)制代碼 代碼如下:
<script type="text/javascript">
/**
* 至少有一個(gè)非空白字符并且不超過(guò)6個(gè)字符的正則表達(dá)式
*
* 作者:chinmo
* 整理:http://www.CodeBit.cn
* 來(lái)源:http://topic.csdn.net/u/20090207/18/ffa003ed-ecd4-40e0-b81f-36aa1fe46d85.html#r_55136904
*/
var pattern = /^[\s]{0,}$|^[\w\s]{7,}$/g;
var str = "";
var str1 = " ";
var str2 = "a";
var str3 = "abcdefgabcdefgabcdefgabcdefgg";
var str4 = " a ";
document.write(!pattern.test(str))
document.write(!pattern.test(str1))
document.write(!pattern.test(str2))
document.write(!pattern.test(str3))
document.write(!pattern.test(str4))
</script>
正則表達(dá)式規(guī)則分析:
^[\s]{0,}$ :整個(gè)字符串為空或者都是空白字符
^[\w\s]{7,}$ : 整個(gè)字符串長(zhǎng)度大于6
作者采用逆向思維,通過(guò)匹配不符合條件的情況,再通過(guò)取反(注意每個(gè) document.write 中的感嘆號(hào))來(lái)實(shí)現(xiàn)要求達(dá)到的效果。
JK_10000 逆向思維解決方案簡(jiǎn)化版
復(fù)制代碼 代碼如下:
<script type="text/javascript">
/**
* 至少有一個(gè)非空白字符并且不超過(guò)6個(gè)字符的正則表達(dá)式
*
* 作者:JK_10000
* 整理:http://www.CodeBit.cn
* 來(lái)源:http://topic.csdn.net/u/20090207/18/ffa003ed-ecd4-40e0-b81f-36aa1fe46d85.html#rt_55145516
*/
var pattern = /.{7}|^\s*$/g;
var str = "";
var str1 = " ";
var str2 = "a";
var str3 = "www.CodeBit.cn";
var str4 = " a ";
document.write(!pattern.test(str))
document.write(!pattern.test(str1))
document.write(!pattern.test(str2))
document.write(!pattern.test(str3))
document.write(!pattern.test(str4))
</script>
正則表達(dá)式規(guī)則分析:
.{7} : 整個(gè)字符串長(zhǎng)度大于6,注意:這里的 . 匹配任意字符
^\s*$ :整個(gè)字符串為空或者都是空白字符
JK_10000 正向思維解決方案
復(fù)制代碼 代碼如下:
<script type="text/javascript">
/**
* 至少有一個(gè)非空白字符并且不超過(guò)6個(gè)字符的正則表達(dá)式
*
* 作者:JK_10000
* 整理:http://www.CodeBit.cn
* 來(lái)源:http://hi.baidu.com/jkisjk/blog/item/b54a7a3d1c7ce3c09f3d629b.html
* 來(lái)源:http://topic.csdn.net/u/20090207/18/ffa003ed-ecd4-40e0-b81f-36aa1fe46d85.html#rt_55145611
*/
var pattern = /^(?!.{7}|^\s*$)/g;
var str = "";
var str1 = " ";
var str2 = "a";
var str3 = "www.CodeBit.cn";
var str4 = " a ";
document.write(pattern.test(str))
document.write(pattern.test(str1))
document.write(pattern.test(str2))
document.write(pattern.test(str3))
document.write(pattern.test(str4))
</script>
正則表達(dá)式規(guī)則分析:
.{7} : 整個(gè)字符串長(zhǎng)度大于6,注意:這里的 . 匹配任意字符
^\s*$ :整個(gè)字符串為空或者都是空白字符
作者使用了正則表達(dá)式的順序否定環(huán)視 ,指明開(kāi)始(^)后面不能有7個(gè)及以上字符,或者整個(gè)字符串為空(\s 沒(méi)有的情況下,^$表示內(nèi)容為空),或者全部都是空白字符 (\s*)。
不過(guò),該正則表達(dá)式可以將環(huán)視條件中的 ^ 去掉,即 /^(?!.{7}|\s*$)/g , 因?yàn)橐?guī)則一開(kāi)始就已經(jīng)有了一個(gè) ^ 。
復(fù)制代碼 代碼如下:
<script type="text/javascript">
/**
* 至少有一個(gè)非空白字符并且不超過(guò)6個(gè)字符的正則表達(dá)式
*
* 作者:JK_10000
* 整理:http://www.CodeBit.cn
* 來(lái)源:http://hi.baidu.com/jkisjk/blog/item/b54a7a3d1c7ce3c09f3d629b.html
* 來(lái)源:http://topic.csdn.net/u/20090207/18/ffa003ed-ecd4-40e0-b81f-36aa1fe46d85.html#rt_55145611
*/
var pattern = /^(?!.{7}|\s*$)/g;
var str = "";
var str1 = " ";
var str2 = "a";
var str3 = "www.CodeBit.cn";
var str4 = " a ";
document.write(pattern.test(str))
document.write(pattern.test(str1))
document.write(pattern.test(str2))
document.write(pattern.test(str3))
document.write(pattern.test(str4))
</script>
wc 發(fā)布在 JK 博客評(píng)論中的方案
復(fù)制代碼 代碼如下:
<script type="text/javascript">
/**
* 至少有一個(gè)非空白字符并且不超過(guò)6個(gè)字符的正則表達(dá)式
*
* 作者:wc
* 整理:http://www.CodeBit.cn
* 來(lái)源:http://hi.baidu.com/jkisjk/blog/item/b54a7a3d1c7ce3c09f3d629b.html
*/
var pattern = /^(?=.*?\S)[\s\S]{0,6}$/g;
var str = "";
var str1 = " ";
var str2 = "a";
var str3 = "www.CodeBit.cn";
var str4 = " a ";
document.write(pattern.test(str))
document.write(pattern.test(str1))
document.write(pattern.test(str2))
document.write(pattern.test(str3))
document.write(pattern.test(str4))
</script>
正則表達(dá)式規(guī)則分析:
(?=.*?\S) :肯定順序環(huán)視,指定任意多個(gè)任意字符后面有個(gè)非空白字符
[\s\S]{0,6} : 6個(gè)以內(nèi)的空白或者非空白字符
在 Javascript 中使用全局匹配修飾符 g 的時(shí)候要特別注意,可參考本站的另外一篇文章:Javascript 中使用 exec 進(jìn)行正則表達(dá)式全局匹配時(shí)的注意事項(xiàng)
您可能感興趣的文章:
相關(guān)文章
java正則表達(dá)式獲取大括號(hào)小括號(hào)內(nèi)容并判斷數(shù)字和小數(shù)親測(cè)可用
這篇文章主要介紹了java正則表達(dá)式獲取大括號(hào)小括號(hào)內(nèi)容并判斷數(shù)字和小數(shù)親測(cè)可用,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-06-06匹配5到10位無(wú)重復(fù)數(shù)字的正則表達(dá)式
對(duì)于有重復(fù)的5到10位數(shù)字可以使用\d{5,10} 這樣的正則,無(wú)重復(fù)的5到10位數(shù)字我考慮了一下還不會(huì),最然只好查網(wǎng)上,找了段代碼,分享給需要的朋友2012-10-10Javascript校驗(yàn)密碼復(fù)雜度的正則表達(dá)式
這篇文章主要介紹了Javascript校驗(yàn)密碼復(fù)雜度的正則表達(dá)式及正則表達(dá)式校驗(yàn)密碼的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08正則表達(dá)式實(shí)現(xiàn)字符的模糊匹配功能示例
這篇文章主要介紹了正則表達(dá)式實(shí)現(xiàn)字符的模糊匹配功能,結(jié)合具體java實(shí)例形式分析了針對(duì)字符串的模糊匹配查詢相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-05-05javascript 數(shù)字的正則表達(dá)式集合
這里收集的是驗(yàn)證數(shù)字的正則表達(dá)式集合,比較的全了,需要驗(yàn)證數(shù)字的朋友很值得參考下。2010-04-04