Java:根据正则表达式生成随机字符串

背景:

有些场合需要生成随机字符串,并且需要把随机字符串的定制权交给用户。

方案:

可以利用 Xeger,根据正则表达式生成随机字符串。

这里举的是Java的例子。
Python 也有 Xeger 这个包(pip install)。

依赖:

1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/com.github.krraghavan/xeger -->
<dependency>
<groupId>com.github.krraghavan</groupId>
<artifactId>xeger</artifactId>
<version>1.0.0-RELEASE</version>
</dependency>

###示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package com.tracenote.Utils;

import nl.flotsam.xeger.Xeger;

public class RegexToRandomString {

public static String generateStringFromRegex(String str) {
Xeger generator = new Xeger(str);
String result = generator.generate();
return result;
}

public static void main(String[] args) {
System.out.println(generateStringFromRegex("[0-9]{8}")); // 8个随机数字
System.out.println(generateStringFromRegex("[a-z]{10}")); // 10个随机小写字母
System.out.println(generateStringFromRegex("[a-z]{10}[0-9]{3}")); // 字母+数字
System.out.println(generateStringFromRegex("[\u4e00-\u9fa5]{20}")); // 20个汉字(包括繁体)
System.out.println(generateStringFromRegex("[a-z]{5}\\@[a-z]{3}\\.com")); // 随机 Email 地址
}
}

运行结果:

29815785
nyqhcgcoou
bffotvxvwt769
照蘤殻騁嘧簪莉浥葧聖咯玫衚橌鼖驤躊鮷榧馓
kuazm@qsn.com

很有意思很好用。