请问如何用正则限制字符串的长度?

时间:2023-01-04 08:18:09
例如,判断护照,以G开头,后跟8位数字,也就是说一共9位数字。
怎么写正则呢?

21 个解决方案

#1


/^G\d{8}$/
^和$能够限制长度吗?

#2



    String str = "G18234656";
    System.out.println(str.matches("^G\\d{8}$"));

#3


G\d{9}
看API好像是这么写的。

#4


引用 3 楼 masterluo 的回复:
G\d{9}
 看API好像是这么写的。

转义。。。。。兄弟。。。

#5


2L的朋友,^G\\d{8}$
这个不行啊

#6


引用 5 楼 hwoarangzk 的回复:
2L的朋友,^G\\d{8}$
 这个不行啊

怎么不行,我试了 没有问题。。。

#7


^G\d{8}$
这样倒是可以
另外,怎么限制不能出现数字?

#8


引用 7 楼 hwoarangzk 的回复:
^G\d{8}$
 这样倒是可以
 另外,怎么限制不能出现数字?

[^0-9]:一个不是0-9的字符

#9


引用 7 楼 hwoarangzk 的回复:
^G\d{8}$
 这样倒是可以
 另外,怎么限制不能出现数字?

你是javaScript的正则吧,javascript正则转义只需要一个\而java中是要\\
限制不能出现数字就不要用\d吗,用\D也就是[^0-9]的意思

#10


的确是js,发错地方了 - -
明白了,如果正则同时加了^$,貌似就能限制长度了,中间如果要有其他字符的话必须还要写东西
话说,[^0-9]倒是不行啊,abc123能通过...

#11


想了另外个办法:
var rule = /\d/g;
!rule.test(str);
反一下就可以了

我想知道如果不执行反操作应该怎么写

#12


还有个问题,ab/cd/ef/gh
如果将/全部换成空格?

#13


引用 12 楼 hwoarangzk 的回复:
还有个问题,ab/cd/ef/gh
如果将/全部换成空格?

var regex=////;
var str="ab/cd/ef/gh ";
str.replace(regex," ");

#14


顶下~

#15


引用 3 楼 masterluo 的回复:
G\d{9}
 看API好像是这么写的。


正解.......

#16


//不就变成注释了么?
/是如何用正则表示的?\倒是知道怎么表示
var rule = new RegExp("/");
var rule = ///;
第一个不知道对不,第二个直接变成注释了
暂时还没想出来

#17


学习中

#18


var s = new RegExp("\/");这个可行
但是能否用直接量来创建这个表达式?

#19


引用 16 楼 hwoarangzk 的回复:
//不就变成注释了么?
/是如何用正则表示的?\倒是知道怎么表示
var rule = new RegExp("/");
var rule = ///;
第一个不知道对不,第二个直接变成注释了
暂时还没想出来

sorry,我写的不对
var regex=/\//; 
var str="ab/cd/ef/gh "; 
str.replace(regex," "); 
 
 
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP  

#20


Java中这么写"^G\\d{8}"就这样就可以了呀

#21


我貌似想得太多了,知道了, 谢谢大家~~~

#1


/^G\d{8}$/
^和$能够限制长度吗?

#2



    String str = "G18234656";
    System.out.println(str.matches("^G\\d{8}$"));

#3


G\d{9}
看API好像是这么写的。

#4


引用 3 楼 masterluo 的回复:
G\d{9}
 看API好像是这么写的。

转义。。。。。兄弟。。。

#5


2L的朋友,^G\\d{8}$
这个不行啊

#6


引用 5 楼 hwoarangzk 的回复:
2L的朋友,^G\\d{8}$
 这个不行啊

怎么不行,我试了 没有问题。。。

#7


^G\d{8}$
这样倒是可以
另外,怎么限制不能出现数字?

#8


引用 7 楼 hwoarangzk 的回复:
^G\d{8}$
 这样倒是可以
 另外,怎么限制不能出现数字?

[^0-9]:一个不是0-9的字符

#9


引用 7 楼 hwoarangzk 的回复:
^G\d{8}$
 这样倒是可以
 另外,怎么限制不能出现数字?

你是javaScript的正则吧,javascript正则转义只需要一个\而java中是要\\
限制不能出现数字就不要用\d吗,用\D也就是[^0-9]的意思

#10


的确是js,发错地方了 - -
明白了,如果正则同时加了^$,貌似就能限制长度了,中间如果要有其他字符的话必须还要写东西
话说,[^0-9]倒是不行啊,abc123能通过...

#11


想了另外个办法:
var rule = /\d/g;
!rule.test(str);
反一下就可以了

我想知道如果不执行反操作应该怎么写

#12


还有个问题,ab/cd/ef/gh
如果将/全部换成空格?

#13


引用 12 楼 hwoarangzk 的回复:
还有个问题,ab/cd/ef/gh
如果将/全部换成空格?

var regex=////;
var str="ab/cd/ef/gh ";
str.replace(regex," ");

#14


顶下~

#15


引用 3 楼 masterluo 的回复:
G\d{9}
 看API好像是这么写的。


正解.......

#16


//不就变成注释了么?
/是如何用正则表示的?\倒是知道怎么表示
var rule = new RegExp("/");
var rule = ///;
第一个不知道对不,第二个直接变成注释了
暂时还没想出来

#17


学习中

#18


var s = new RegExp("\/");这个可行
但是能否用直接量来创建这个表达式?

#19


引用 16 楼 hwoarangzk 的回复:
//不就变成注释了么?
/是如何用正则表示的?\倒是知道怎么表示
var rule = new RegExp("/");
var rule = ///;
第一个不知道对不,第二个直接变成注释了
暂时还没想出来

sorry,我写的不对
var regex=/\//; 
var str="ab/cd/ef/gh "; 
str.replace(regex," "); 
 
 
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP  

#20


Java中这么写"^G\\d{8}"就这样就可以了呀

#21


我貌似想得太多了,知道了, 谢谢大家~~~