Description
Initial checklist
- I read the support docs
- I read the contributing guide
- I agree to follow the code of conduct
- I searched issues and discussions and couldn’t find anything (or linked relevant results below)
Affected package
mdast-util-gfm-autolink-literal@latest
Steps to reproduce
- Use mdast-util-gfm-autolink-literal in an environment running Chrome 49.
- 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
Operating system
window xp
Build and bundle tools
No response