国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > regex > 正文

正則表達式 匹配至少有一個非空白字符并且不超過指定長度

2020-01-20 22:16:23
字體:
來源:轉載
供稿:網友
chinmo 逆向思維解決方案
復制代碼 代碼如下:

<script type="text/javascript">
/**
* 至少有一個非空白字符并且不超過6個字符的正則表達式
*
* 作者:chinmo
* 整理:http://www.CodeBit.cn
* 來源: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>

正則表達式規則分析:
^[/s]{0,}$ :整個字符串為空或者都是空白字符
^[/w/s]{7,}$ : 整個字符串長度大于6
作者采用逆向思維,通過匹配不符合條件的情況,再通過取反(注意每個 document.write 中的感嘆號)來實現要求達到的效果。
JK_10000 逆向思維解決方案簡化版
復制代碼 代碼如下:

<script type="text/javascript">
/**
* 至少有一個非空白字符并且不超過6個字符的正則表達式
*
* 作者:JK_10000
* 整理:http://www.CodeBit.cn
* 來源: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>

正則表達式規則分析:
.{7} : 整個字符串長度大于6,注意:這里的 . 匹配任意字符
^/s*$ :整個字符串為空或者都是空白字符
JK_10000 正向思維解決方案
復制代碼 代碼如下:

<script type="text/javascript">
/**
* 至少有一個非空白字符并且不超過6個字符的正則表達式
*
* 作者:JK_10000
* 整理:http://www.CodeBit.cn
* 來源:http://hi.baidu.com/jkisjk/blog/item/b54a7a3d1c7ce3c09f3d629b.html
* 來源: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>

正則表達式規則分析:
.{7} : 整個字符串長度大于6,注意:這里的 . 匹配任意字符
^/s*$ :整個字符串為空或者都是空白字符
作者使用了正則表達式的順序否定環視 ,指明開始(^)后面不能有7個及以上字符,或者整個字符串為空(/s 沒有的情況下,^$表示內容為空),或者全部都是空白字符 (/s*)。
不過,該正則表達式可以將環視條件中的 ^ 去掉,即 /^(?!.{7}|/s*$)/g , 因為規則一開始就已經有了一個 ^ 。
復制代碼 代碼如下:

<script type="text/javascript">
/**
* 至少有一個非空白字符并且不超過6個字符的正則表達式
*
* 作者:JK_10000
* 整理:http://www.CodeBit.cn
* 來源:http://hi.baidu.com/jkisjk/blog/item/b54a7a3d1c7ce3c09f3d629b.html
* 來源: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 發布在 JK 博客評論中的方案
復制代碼 代碼如下:

<script type="text/javascript">
/**
* 至少有一個非空白字符并且不超過6個字符的正則表達式
*
* 作者:wc
* 整理:http://www.CodeBit.cn
* 來源: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>

正則表達式規則分析:
(?=.*?/S) :肯定順序環視,指定任意多個任意字符后面有個非空白字符
[/s/S]{0,6} : 6個以內的空白或者非空白字符
在 Javascript 中使用全局匹配修飾符 g 的時候要特別注意,可參考本站的另外一篇文章:Javascript 中使用 exec 進行正則表達式全局匹配時的注意事項
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巩义市| 磴口县| 平乐县| 阿城市| 芜湖县| 阿拉善右旗| 安西县| 枣阳市| 洪泽县| 弋阳县| 涞源县| 图们市| 蒙自县| 封开县| 景德镇市| 桦甸市| 柏乡县| 中超| 理塘县| 广州市| 鄂尔多斯市| 徐闻县| 会东县| 尖扎县| 房山区| 启东市| 舟山市| 玛纳斯县| 彰武县| 绩溪县| 通城县| 临沂市| 大同县| 雷波县| 沈阳市| 荆门市| 泌阳县| 军事| 镇安县| 津南区| 岳西县|