Skip to content
This repository has been archived by the owner on Aug 5, 2020. It is now read-only.

用一种类似正则表达式的句法来生成随机字符串。

License

Notifications You must be signed in to change notification settings

hugefiver/formatted-random

 
 

Repository files navigation

formatted-random

这个小程序能够用一种类似正则表达式的句法来生成一个格式化过的随机字符串。
可以用来生成一个没人记得住的密码……什么的。

input :  \w{5}-\w{5}-\w{5}-\W{5}
output:  hki2I-3fhUu-6RCnL-""@,`

usage

可以使用 stack 来构建这个项目。

$ stack build

之后,执行:

$ formatted-random [<exprs>...]

syntax

非随机字符

除了 {, }, [, ], \, ~, (, ), +, * 之外的字符,如果单独出现在输入中,应当会被原封不动地输出。

input :  Hello, Haskell!
output:  Hello, Haskell!

方括号

使用 [<pattern>] 来指代要随机产生的一个字符。
其中,pattern 支持这些格式:

  • [a-z] 会随机变成任意一个小写字母:
input :  [a-z]
output:  e
  • [x] 代表某一个字母本身:
input :   [x]
output:   x
  • 以上的 pattern 可以在一个方括号内自由组合:
input  :  [aeiou0-9]
output1:  8
output2:  a

转义字符

通过 \<character> 来输入一些特殊的字符,或者是一些常用的模式。

character effect
[]{}~?+() 生成它们自己。
w 字母或者数字,相当于 [a-zA-Z0-9]
W 符号,相当于 [~a-zA-Z0-9](虽然现在还没有实现[~<pattern>]的格式……)
d 数字
D 除了数字之外的东西。
p 所有可以打印的字符。
a 字母。
A 除了字母以外的东西。

子串

通过 (<substr1>|<substr2>|...) 来在若干个模式串中随机选择一个。

input :  (000|111|444){3}
output:  111444111

重复一个字母

在任意一个 方括号/转义字符/字串 后,使用 {<integer>} 来重复它若干次。这些重复的随机字符不一定相同。

input :  [aeiou0-9]{10}
output:  11eio64oee

可以使用 {<lowerbound>, <upperbound>} 句法来达到随机次重复的效果。

input :  \d{6,16}
output:  05795719

也可以使用 + 来随机重复一次或更多次。
也可以使用 * 来随机重复〇次或更多次。

input  :  \d*\a+
output1:  F
output2:  22milG

About

用一种类似正则表达式的句法来生成随机字符串。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Haskell 100.0%