提问人:st_clair_clarke 提问时间:11/14/2023 最后编辑:st_clair_clarke 更新时间:11/15/2023 访问量:24
使用 XRegExp 测试字母数字字符串,结果不正确
Testing alpha-numeric string with XRegExp giving incorrect results
问:
我有以下几点
正则表达式模式.ts
import { match } from 'ts-pattern'
import XRegExp from 'xregexp'
export const alphanumRegex = (action = 'validate'): RegExp | string => {
const baseRegex = XRegExp.tag('gimx')`A-Z0-9`
const finalRegex = XRegExp.tag(baseRegex.flags)`[${baseRegex}]+`
return match(action)
.returnType<RegExp | string>()
.with('negate', () => negateRegex(baseRegex))
.with('validate', () => inputValidationRegex(finalRegex))
.otherwise(() => absentParamError(action, alphanumRegex.name))
}
export const absentParamError = (action: string, fnName: string) =>
`Absent identifier '${action}' for '${fnName}()'`
export const inputValidationRegex = (regex: RegExp) =>
XRegExp.tag(regex.flags)`^(${regex})$`
export const negateRegex = (regex: RegExp) =>
XRegExp.tag(regex.flags)`[^${regex}]*`
// Testing the regex
const retVal1 = XRegExp.test('abc123', alphanumRegex('validate') )
const retVal2 = XRegExp.test('abc123', /^([A-Z0-9]+)$/gmi)
console.log( {retVal, retVal1, retVal2}) // {retVal: retVal1: false, retVal2: true}
在我看来,retVal1 和 retVal2 RegExp 应该相同,但结果不同。
我的错误在哪里?
谢谢
答: 暂无答案
评论
^
$
finalRegex