使用 XRegExp 测试字母数字字符串,结果不正确

Testing alpha-numeric string with XRegExp giving incorrect results

提问人:st_clair_clarke 提问时间:11/14/2023 最后编辑:st_clair_clarke 更新时间:11/15/2023 访问量:24

问:

我有以下几点

正则表达式模式.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 应该相同,但结果不同。

我的错误在哪里?

谢谢

正则表达式 xregexp

评论

0赞 AdrianHHH 11/15/2023
我在 中没有看到任何 or(用于字符串的开头和结尾)。^$finalRegex
0赞 st_clair_clarke 11/16/2023
@AdrianHHH 当 action = validate 时,它们会与 match(action) 一起添加。请注意,此函数映射到 alphanumRegex 下的函数 inputValidatorRegex。也许 interimRegex 可能是一个比 finalRegex 更好的名字。

答: 暂无答案