npm.io
1.0.59 • Published 1 year ago

regexp-support

Licence
ISC
Version
1.0.59
Deps
2
Size
529 kB
Vulns
0
Weekly
0
Stars
8

regexp-support

check RegExp ( regular expressions ) support

install

npm install regexp-support

version test log

Api

allow u check support on other RegExp base class

hasSupportFlag(flag: string, RegExpClass?: typeof RegExp, skipPatternCheck?: boolean): boolean
testFlag(flag: string, RegExpClass?: typeof RegExp, flagsPattern?): boolean

RegExpClass can be Object with create, for some class can't create by new

export interface ICreateRegExp
{
	create(pattern: string, flag?: string, ...argv)
}

demo

import support from 'regexp-support';

console.log(support);

todo

desc
lookAheadPositive, lookAheadNegative
  • aa(?=bb)
  • aa(?!bb)
lookBehindPositive
  • (?<=\$)foo
const RE_DOLLAR_PREFIX = /(?<=\$)foo/g;
'$foo %foo foo'.replace(RE_DOLLAR_PREFIX, 'bar'); // => '$bar %foo foo'
lookBehindNegative
  • (?<!\$)foo
const RE_NO_DOLLAR_PREFIX = /(?<!\$)foo/g;
'$foo %foo foo'.replace(RE_NO_DOLLAR_PREFIX, 'bar'); // => '$foo %bar bar'
node.js 10
{ nativeFlags: 'gimsuy',
  flags: 
   { multiline: true,
     m: true,
     global: true,
     g: true,
     ignoreCase: true,
     i: true,
     sticky: true,
     y: true,
     unicode: true,
     u: true,
     dotAll: true,
     s: true,
     freeSpacing: false,
     x: false,
     n: false },
  flagsAll: { g: true, i: true, m: true, s: true, u: true, y: true },
  pattern: 
   { namedCapturingGroups: true,
     namedCapturingGroupsUnicode: true,
     namedCapturingGroupsEmoji: false,
     namedCapturingGroupsBackreference: true,
     namedCapturingGroupsDuplicate: false,
     lookAheadPositive: true,
     lookAheadNegative: true,
     lookBehindPositive: true,
     lookBehindNegative: true,
     dotUnicodeEmoji: true,
     classSub: false },
  prototype: 
   { source: true,
     flags: true,
     lastIndex: true,
     dotAll: true,
     global: true,
     ignoreCase: true,
     multiline: true,
     sticky: true,
     unicode: true },
  static: 
   { '$1': true,
     '$2': true,
     '$3': true,
     '$4': true,
     '$5': true,
     '$6': true,
     '$7': true,
     '$8': true,
     '$9': true,
     input: true,
     '$_': true,
     lastMatch: true,
     '__CODE_BLOCK_7__amp;': true,
     lastParen: true,
     '$+': true,
     leftContext: true,
     '

regexp-support

check RegExp ( regular expressions ) support

install

npm install regexp-support

version test log

Api

allow u check support on other RegExp base class

hasSupportFlag(flag: string, RegExpClass?: typeof RegExp, skipPatternCheck?: boolean): boolean
testFlag(flag: string, RegExpClass?: typeof RegExp, flagsPattern?): boolean

__INLINE_CODE_0__ can be Object with __INLINE_CODE_1__, for some class can't create by __INLINE_CODE_2__

export interface ICreateRegExp
{
	create(pattern: string, flag?: string, ...argv)
}

demo

import support from 'regexp-support';

console.log(support);

todo

desc
lookAheadPositive, lookAheadNegative
  • __INLINE_CODE_3__
  • __INLINE_CODE_4__
lookBehindPositive
  • __INLINE_CODE_5__
const RE_DOLLAR_PREFIX = /(?<=\$)foo/g;
'$foo %foo foo'.replace(RE_DOLLAR_PREFIX, 'bar'); // => '$bar %foo foo'
lookBehindNegative
  • __INLINE_CODE_6__
const RE_NO_DOLLAR_PREFIX = /(?<!\$)foo/g;
'$foo %foo foo'.replace(RE_NO_DOLLAR_PREFIX, 'bar'); // => '$foo %bar bar'
node.js 10
'
: true, rightContext: true, '$\'': true, '$10': false, '$100': false }, symbol: { species: false, match: true, replace: true, search: true, split: true }, objectStringTag: '[object RegExp]', unicodeSet: { unicode: true, script: true, blocks: false, unicodeTest: { C: true, Other: true, Cc: true, Control: true, Cs: true, Surrogate: true, L: true, Letter: true, LC: true, Cased_Letter: true, Ll: true, Lowercase_Letter: true, Lo: true, Other_Letter: true, Lu: true, Uppercase_Letter: true, M: true, Mark: true, Me: true, Enclosing_Mark: true, Mn: true, Nonspacing_Mark: true, N: true, Number: true, Nd: true, Decimal_Number: true, Nl: true, Letter_Number: true, No: true, Other_Number: true, P: true, Punctuation: true, Pc: true, Connector_Punctuation: true, Pd: true, Dash_Punctuation: true, Pe: true, Close_Punctuation: true, Pf: true, Final_Punctuation: true, Pi: true, Initial_Punctuation: true, Po: true, Other_Punctuation: true, Ps: true, Open_Punctuation: true, S: true, Symbol: true, Sc: true, Currency_Symbol: true, Sk: true, Modifier_Symbol: true, Sm: true, Math_Symbol: true, So: true, Other_Symbol: true, Z: true, Separator: true, Zl: true, Line_Separator: true, Zp: true, Paragraph_Separator: true, Zs: true, Space_Separator: true, ASCII: true, Alphabetic: true, Any: true, White_Space: true, Alpha: true, Emoji: true, Emoji_Component: true, Emoji_Modifier: true, Emoji_Presentation: true, Ideographic: true, Ideo: true, Lower: true, Quotation_Mark: true, QMark: true, Unified_Ideograph: true, Upper: true, Combining_Mark: true, punct: true, Digit: false, Alnum: false, Punct: false, Graph: false, Blank: false, Cntrl: false, XDigit: false, Space: false, Decimal_Digit_Number: false }, scriptTest: { Arabic: true, Bengali: true, Common: true, Coptic: true, Cyrillic: true, Ethiopic: true, Georgian: true, Greek: true, Han: true, Hangul: true, Hiragana: true, Katakana: true, Latin: true, Tamil: true, Tibetan: true, Arab: true, Beng: true, Copt: true, Cyrl: true, Ethi: true, Geor: true, Grek: true, Hani: true, Hira: true, Kana: true, Latn: true, Taml: true, Tibt: true }, blocksTest: { InBasic_Latin: false } } }
node.js 9

by test on RunKit

{ flags: 
   { multiline: true,
     m: true,
     global: true,
     g: true,
     ignoreCase: true,
     i: true,
     sticky: true,
     y: true,
     unicode: true,
     u: true,
     dotAll: true,
     s: true,
     freeSpacing: false,
     x: false,
     n: false },
  flagsAll: { g: true, i: true, m: true, s: true, u: true, y: true },
  pattern: 
   { namedCapturingGroups: false,
     namedCapturingGroupsUnicode: false,
     namedCapturingGroupsEmoji: false } }
node.js 8

by test on RunKit

{ flags: 
   { multiline: true,
     m: true,
     global: true,
     g: true,
     ignoreCase: true,
     i: true,
     sticky: true,
     y: true,
     unicode: true,
     u: true,
     dotAll: true,
     s: true,
     freeSpacing: false,
     x: false,
     n: false },
  flagsAll: { g: true, i: true, m: true, s: true, u: true, y: true },
  pattern: 
   { namedCapturingGroups: false,
     namedCapturingGroupsUnicode: false,
     namedCapturingGroupsEmoji: false } }

Keywords