正则 java 生成 数据_使用正则表达式生成随机数据的方法

从正则表达式生成随机数据

项目地址

安装

git clone https://github.com/GitHub-Laziji/reverse-regexp.git

cd reverse-regexp

mvn install

org.laziji.commons

reverse-regexp

1.0-SNAPSHOT

使用

随机字符语法

支持大部分正则表达式的匹配语法

\d 数字, 相当于[0-9]

\w 数字、字母加下划线, 相当于[0-9a-zA-Z_]

\s 空白字符, 只包含空格和制表符

. 除\n和\r以外的任意字符, 生成随机字符时只在ascii码0~255之间生成

[a-zA-Z甲乙] 区间, 不支持^语法

以及其他字符

重复打印语法

与正则表达式的重复匹配语法相同

? 随机生成0个或1个字符

* 随机生成0个以上字符, 默认最多16个

+ 随机生成1个以上字符, 默认最多16个

{n} 生成n个字符

{n,} 随机生成n~个字符, 默认最多max(16,n)个

{n,m} 随机生成n~m个字符

其他语法

| 或语法, 例如aaa|bbb|ccc随机生成aaa或bbb或ccc, 概率相等

() 支持括号

public class MainTest {

@Test

public void test() throws RegexpIllegalException, UninitializedException, TypeNotMatchException {

random("\\w{6,12}@[a-z0-9]{3}\\.(com|cn)", "邮箱");

random("1(3|5|7|8)\\d{9}", "手机号");

random("-?[1-9]\\d*\\.\\d+", "浮点数");

random("https?://[\\w-]+(\\.[\\w-]+){1,2}(/[\\w-]{3,6}){0,2}(\\?[\\w_]{4,6}=[\\w_]{4,6}(&[\\w_]{4,6}=[\\w_]{4,6}){0,2})?", "网址");

}

private void random(String expression, String title)

throws RegexpIllegalException, TypeNotMatchException, UninitializedException {

System.out.println(title + " " + expression);

Node node = new OrdinaryNode(expression);

Pattern pattern = Pattern.compile(node.getExpression());

for (int i = 0; i < 10; i++) {

String data = node.random();

System.out.println("[" + pattern.matcher(data).matches() + "] " + data);

}

System.out.println();

}

}

手机号 1(3|5|7|8)\d{9}

[true] 18263364656

[true] 17539493178

[true] 17452542895

[true] 15190699623

[true] 13441385631

[true] 15450856416

[true] 18651247283

[true] 13835809899

[true] 18595798569

[true] 17115703866

浮点数 -?[1-9]\d*\.\d+

[true] 8148340336.1501586550282701

[true] -3339660539.406

[true] -51.6120243661611419

[true] -731621835440468.9708278

[true] -27438753435.9137579

[true] 393811376.777268751417

[true] 3286498432415.3962664603

[true] -5299652275.9

[true] 216.93676279820770

[true] 34.36843273

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值