Improve URL parsing for both normal and looseUrl modes #61
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR fixes several issues with URL detection and enhances support for various URL formats across both parsing modes.
Changes
Fix consecutive periods bug (looseUrl mode):
Prevents invalid strings with consecutive periods (e.g.,
test..example.com) from being incorrectly parsed as URLs.The algorithm now correctly extracts only the valid domain part (
example.com).Enhanced URL format support (both modes):
localhostURLs with ports (e.g.,localhost:3000)192.168.1.1:8080)example.com:8080)xn--n3h.com)Improved trailing punctuation handling (both modes):
Better detection of URL boundaries to exclude trailing punctuation marks (
.,,,!,?,;,:) from being included in parsed URLs.Comprehensive test coverage:
Added extensive test cases covering all the new URL formats and edge cases for both parsing modes.
Technical Details
Updated both regex patterns in
lib/src/url.dart:localhost, IP addresses, ports, and punycode domains while preventing false positives with consecutive periods.Fixes