Skip to content

Make mdast-util-gfm-autolink-literal Compatible with Older Browsers (Chrome 49): Remove Lookbehind Assertion #17

Closed as duplicate of#10
@consistent-k

Description

@consistent-k

Initial checklist

Affected package

mdast-util-gfm-autolink-literal@latest

Steps to reproduce

  1. Use mdast-util-gfm-autolink-literal in an environment running Chrome 49.
  2. Process a markdown file or text that includes email addresses triggering the regex:
[/(?<=^|\s|\p{P}|\p{S})([-.\w+]+)@([-\w]+(?:\.[-\w]+)+)/gu, findEmail]

Observe that Chrome 49 throws a SyntaxError: Invalid regular expression due to the unsupported lookbehind assertion.

Actual behavior

Chrome 49 throws a syntax error because it does not support the (?<=...) lookbehind assertion used in the regex. This stops the library from correctly parsing autolinked email addresses.

Expected behavior

The regex should be modified to avoid the use of lookbehind assertions (e.g., by using non-capturing groups or an alternative matching strategy) so that it can run in legacy browsers like Chrome 49 without throwing an error. This would improve compatibility and allow users with older browser versions to use the library without issues.

Additional context:
Consider replacing the current regex

/(?<=^|\s|\p{P}|\p{S})([-.\w+]+)@([-\w]+(?:\.[-\w]+)+)/gu

with a version that does not rely on lookbehind assertions, such as:

/(?:^|[\s\p{P}\p{S}])(([-.\w+]+)@([-\w]+(?:\.[-\w]+)+))/gu

Note that the consuming code might need to adjust index access to the matched email address.

Thank you for your consideration and for maintaining this project!

Runtime

Chrome 49.0.2623.100

Package manager

[email protected]

Operating system

window xp

Build and bundle tools

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions