Skip to content

Regular Expression finds #58287

Open
Open
@RyanCavanaugh

Description

@RyanCavanaugh

Acknowledgement

  • I acknowledge that issues using this template may be closed without further explanation at the maintainer's discretion.

Comment

Note: I eventually gave up on capturing "Not available unless target is ESXXXX" errors since they're not really interesting to look at

Via #58275

This character cannot be escaped in a regular expression.

const image_path_escape = image_path.replace(/\o/g, '/o') //escape string "\o" in "\output"

Named capturing groups are only available when targeting 'ES2018' or later

/^((?<negative>-)|\+)?P((?<years>\d*)Y)?((?<months>\d*)M)?((?<weeks>\d*)W)?((?<days>\d*)D)?((?<time>T)((?<hours>\d*[.,]?\d{1,9})H)?((?<minutes>\d*[.,]?\d{1,9})M)?((?<seconds>\d*[.,]?\d{1,9})S)?)?$/

Named capturing groups are only available when targeting 'ES2018' or later.

const IMPORT_REGEX = /(?<key>import|export)\s+(?:(?<alias>[\w,{}\s*]+)\s+from)?\s*(?:(?<quote>["'])?(?<ref>[@\w\s\\/.-]+)\3?)\s*(?<term>[;\n])/g

Named capturing groups are only available when targeting 'ES2018' or later

const match = text.match(/^(?<description>(.|\n)*)```(?<language>[^\n]+)\n(?<code>(.|\n)+)\n```$/m);

This regular expression flag is only available when targeting 'es2018' or later

return fileContent.replace(/<!--.*?-->/gs, '');

This character cannot be escaped in a regular expression

const fixedId = listItem.id.replace(/\_/g, "/").replace(/\-/g, "+");

Named capturing groups are only available when targeting 'ES2018' or later

const INPUT_EXTENSION_IMPORT_REGEX = /\.(svelte|(lite(\.tsx|\.jsx)?))(?<quote>['"])/g;

Octal escape sequences are not allowed. Use the syntax '\x04'

const propsRegex = /props\s*\.\s*([a-zA-Z0-9_\4]+)\(/;

Named capturing groups are only available when targeting 'ES2018' or later

private static SSH_PATH_RE = new RegExp(
    [
        /^\s*/,
        /(?:(?<proto>[a-z]+):\/\/)?/,
        /(?:(?<user>[a-z_][a-z0-9_-]+)@)?/,
        /(?<domain>[^\s\/\?#:]+)/,
        /(?::(?<port>[0-9]{1,5}))?/,
        /(?:[\/:](?<owner>[^\s\/\?#:]+))?/,
        /(?:[\/:](?<repo>(?:[^\s\?#:.]|\.(?!git\/?\s*$))+))/,
        /(?:.git)?\/?\s*$/,
    ]

Named capturing groups are only available when targeting 'ES2018' or later

const regexp = /\[(?<link>http:\/\/[^\]]+)\]/g

A character class range must not be bounded by another character class

this.relocDataSymNameRe = /^(?<symname>[^\d-+][\w.]*)?\s*(?<addend_or_value>.*)$/;

filepath.replace(/^C:\/Users\/[\w\d-.]*\/AppData\/Local\/Temp\/compiler-explorer-compiler[\w\d-.]*\//, '/app/')

const ATFILELINE_RE = /\s*at ([\w-/.]+):(\d+)/;

const selectedPassRe = /[0-9]*(i|t|r)\.([\w-_]*)/;

Octal escape sequences are not allowed. Use the syntax '\x02'.

const shellChars = /[\002-\011\013-\032\\#?`(){}[\]^*<=>~|; "!$&'\202-\377]/;

This character cannot be escaped in a regular expression.

private readonly nameWithOwner = /(?<owner>-?[a-z0-9][a-z0-9\-\_]*)\/(?<name>(?:\w|\.|\-)+)/;

const isURlCustomFormat = /\.[a-z]+\z/.test(anchor.href);

Octal escape sequences are not allowed. Use the syntax '\x02'

const regexp = /([^\s'"]+(['"])([^\2]*?)\2)|[^\s'"]+|(['"])([^\4]*?)\4/gi;

A character class range must not be bounded by another character class

// Source: https://stackoverflow.com/a/8234912/2013580
const urlRegExp = new RegExp(
  /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=+$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=+$,\w]+@)[A-Za-z0-9.-]+)((?:\/[+~%/.\w-_]*)?\??(?:[-+=&;%@.\w_]*)#?(?:[\w]*))?)/,
);

This regular expression flag is only available when targeting 'es2022' or later

// this regex is different from HASHTAG_REGEX in that it does not look for a
// #+character. It uses a negative look-ahead for `# `
const HASH_REGEX =
  /(?<=^|\s)#(?![ \t#])([0-9]*[\p{L}\p{Emoji_Presentation}\p{N}/_-]*)/dgu;

This regular expression flag is only available when targeting 'es2018' or later

return message.replace(/([{}](?:.*[{}])?)/su, `'$1'`)

This regular expression flag is only available when targeting 'es6' or later

return message.replace(/([{}](?:.*[{}])?)/su, `'$1'`)

Octal escape sequences are not allowed. Use the syntax '\x00'

// Since negative lookbehind isn't supported in all browsers, this leaves out the negative lookbehind condition `(?<!\.lock)` to ensure the branch name doesn't end with `.lock`
const validBranchOrTagRegex = /^[^/](?!.*\/\.)(?!.*\.\.)(?!.*\/\/)(?!.*@\{)[^\000-\037\177 ~^:?*[\\]+[^./]$/;

// Since negative lookbehind isn't supported in all browsers, leave out the negative lookbehind condition `(?<!\.lock)` to ensure the branch name doesn't end with `.lock`
const refRegexShared = /\b((?!.*\/\.)(?!.*\.\.)(?!.*\/\/)(?!.*@\{)[^\000-\037\177 ,~^:?*[\\]+[^ ./])\b/gi;

This regular expression flag is only available when targeting 'es2018' or later

if (!/(\{\{.+?\}\})|(\{#.+?#\})|(\{%.+?%\})/s.test(str)) {

A character class range must not be bounded by another character class

const rUrl = /((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=+$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=+$,\w]+@)[A-Za-z0-9.-]+)((?:\/[+~%/.\w-_]*)?\??(?:[-+=&;%@.\w_]*)#?(?:[.!/\\w]*))?)/;

This character cannot be escaped in a regular expression

    expect(data['message']).toMatch(
      /Malformed FormData request. \_*Response.formData: Could not parse content as FormData./
    )

This regular expression flag is only available when targeting 'es6' or later

const validBundleID = /^([a-zA-Z]([a-zA-Z0-9_])*\.)+[a-zA-Z]([a-zA-Z0-9_])*$/u

There is nothing available for repetition

const regExp: RegExp = /const foo *= *{0x1: *'bar'};/;

'}' expected

/tag`foo *\${0x1 *\+ *0x1} *bar`;/

A character class range must not be bounded by another character class

if (!/^([\w-.]*)$/.test(name)) {

A character class range must not be bounded by another character class.

return str.replace(/^(\w)|[\s-_:]+(\w)/g, function (match, p1, p2) {

A character class range must not be bounded by another character class

const urlGithubRE = /^(?:https:\/\/(?:github\.com|api\.github\.com\/repos)|(?:\/)?(?:\/)?repos)([\w-.?!=&%*+:@\/]*)/g;

This character cannot be escaped in a regular expression.

const H_REGEX = /(?<tag>[\w\-]+)?(?:#(?<id>[\w\-]+))?(?<class>(?:\.(?:[\w\-]+))*)(?:@(?<name>(?:[\w\_])+))?/;

This regular expression flag is only available when targeting 'es2022' or later.

const markRegex = /\bMARK:\s*(.*)$/d;

Octal escape sequences are not allowed. Use the syntax '\x09'.

function cssEscape(str: string): string {
	return str.replace(/[\11\12\14\15\40]/g, '/'); // HTML class names can not contain certain whitespace characters, use / instead, which doesn't exist in file names.
}

A character class range must not be bounded by another character class.

const fileRegex = /(file:\/\/)?([a-zA-Z]:(\\\\|\\|\/)|(\\\\|\\|\/))?([\w-\._]+(\\\\|\\|\/))+[\w-\._]*/g;

A character class range must not be bounded by another character class.

/^\w([\w-.]*\w)?$/.test(x.preferredUsername)

Named capturing groups are only available when targeting 'ES2018' or later

const deprecation = (propDescriptor.description || '').match(/@deprecated(\s+(?<info>.*))?/);

A character class range must not be bounded by another character class.

let isText = /^[\w-\s.,\t\n]+$/.test(detail)

This character cannot be escaped in a regular expression

return tag.match(/^(?![\.\-])([a-zA-Z0-9\_\.\-])+$/g);

A character class range must not be bounded by another character class

const urlRegex = () =>
  /((?:https?(?::\/\/))(?:www\.)?(?:[a-zA-Z\d-_.]+(?:(?:\.|@)[a-zA-Z\d]{2,})|localhost)(?:(?:[-a-zA-Z\d:%_+.~#!?&//=@]*)(?:[,](?![\s]))*)*)/g;

A character class range must not be bounded by another character class

export function expandDefaultServerVariables(url: string, variables: object = {}) {
  return url.replace(
    /(?:{)([\w-.]+)(?:})/g,
    (match, name) => (variables[name] && variables[name].default) || match,
  );
}

dozens of these in this file, see #58275 (comment)

A decimal escape must refer to an existent capturing group. There are only 1 capturing groups in this regular expression

/([^a-zA-Z0-9\s{(\[<])(?:(?!\2)[^\\]|\\[\s\S])*\2(?:(?!\2)[^\\]|\\[\s\S])*\2/

A character class range must not be bounded by another character class

    // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec
    const githubMatch = location.match(/https:\/\/github.com\/([\w-_]+\/[\w-_]+)/i);

Unicode property value expressions are only available when the Unicode (u) flag or the Unicode Sets (v) flag is set

    slug: ['', unicodePatternValidator(/^[\p{Letter}0-9._-]+$/)],

A character class range must not be bounded by another character class

export const wordPattern = /(#?-?\d*\.\d\w*%?)|([$@#!.:]?[\w-?]+%?)|[$@#!.]/g;

return stream.advanceIfRegExp(/^[_:\w][_:\w-.\d]*/).toLowerCase();

Metadata

Metadata

Assignees

No one assigned

    Labels

    DiscussionIssues which may not have code impact

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions