altra/reverse-regex

将正则表达式转换为文本,用于测试

dev-master 2022-02-03 11:58 UTC

This package is not auto-updated.

Last update: 2024-09-27 23:57:27 UTC


README

Build Status

使用正则表达式生成文本字符串,可用于以下情况

  1. 编写网页表单的测试数据。
  2. 编写数据库的测试数据。
  3. 生成正则表达式的测试数据。

示例


use ReverseRegex\Lexer;
use ReverseRegex\Random\SimpleRandom;
use ReverseRegex\Parser;
use ReverseRegex\Generator\Scope;

# load composer
require "vendor/autoload.php";

$lexer = new  Lexer('[a-z]{10}');
$gen   = new SimpleRandom(10007);
$result = '';

$parser = new Parser($lexer,new Scope(),new Scope());
$parser->parse()->getResult()->generate($result,$gen);

echo $result;

生成

jmceohykoa
aclohnotga
jqegzuklcv
ixdbpbgpkl
kcyrxqqfyw
jcxsjrtrqb
kvaczmawlz
itwrowxfxh
auinmymonl
dujyzuhoag
vaygybwkfm

其他示例

  1. 澳大利亚电话号码
  2. 澳大利亚邮政编码
  3. 手机号码

安装

使用composer进行安装

{
  "require" : {
	"icomefromthenet/reverse-regex" : "dev-master"
    }
}

编写正则表达式

  1. 转义所有元字符,即如果你需要在正则表达式中转义字符,你需要在这里转义。
  2. 并非所有元字符都受支持,请参见以下列表。
  3. 使用\X{####}指定unicode值,使用[\X{####}-\X{####}]指定范围。
  4. 不支持的Unicode \p,我找不到UCD到php的端口,也许将来会添加支持。
  5. 量词应用于最左侧的组、字面量或字符类。
  6. 注意+*量词,它们应用的最多可能出现次数为PHP_INT_MAX

正则表达式支持

示例 描述 结果字符串
(abcf) 支持字面量,这将生成字符串 `abcf`
\((abcf)\) 按照通常在正则表达式中转义元字符 `(abcf)`
[a-z] 支持字符类 `a`
a{5} 支持量词,总是应用于最后一个组或字面量或字符类 `aaaaa`
a{1,5} 支持范围量词 `aa`
a|b|c 支持选择,随机选择三个中的一个 `b`
a|(y|d){5} 支持使用选择和量词的组 `ddddd`或`a`或`yyyyy`
\d 数字简写等价于[0-9] `1`
\w单词字符简写等价于[a-zA-Z0-9_] `j`
\W非单词字符简写等价于[^a-zA-Z0-9_] `j`
\s空格简写仅适用于ASCII ` `
\S非空格简写仅适用于ASCII `i`
. 点所有ASCII字符 `$`
* + ? 简写量词,建议不要使用它们
\X{00FF}[\X{00FF}-\X{00FF}]Unicode范围
\xFF[\xFF-\xFF]十六进制范围