diff --git a/lib/src/phone_number.dart b/lib/src/phone_number.dart index 37c2243..7738464 100644 --- a/lib/src/phone_number.dart +++ b/lib/src/phone_number.dart @@ -1,7 +1,7 @@ import 'package:linkify/linkify.dart'; final _phoneNumberRegex = RegExp( - r'^(.*?)((tel:)?[+]*[\s/0-9]{8,15})', + r'^(.*?)((tel:)?[+]*[0-9][\s/0-9]{6,13}[0-9])', caseSensitive: false, dotAll: true, ); diff --git a/test/linkify_test.dart b/test/linkify_test.dart index b9c2ccb..58c51f7 100644 --- a/test/linkify_test.dart +++ b/test/linkify_test.dart @@ -313,4 +313,38 @@ void main() { ], ); }); + + test('Don\'t parse spaces as phone numbers', () { + expectListEqual( + linkify( + " ", + linkifiers: [ + UrlLinkifier(), + EmailLinkifier(), + PhoneNumberLinkifier(), + ], + ), + [ + TextElement(" "), + ], + ); + }); + + test('Parse multiple phone numbers', () { + expectListEqual( + linkify( + "0123456789 and 9876543210", + linkifiers: [ + UrlLinkifier(), + EmailLinkifier(), + PhoneNumberLinkifier(), + ], + ), + [ + PhoneNumberElement("0123456789"), + TextElement(" and "), + PhoneNumberElement("9876543210"), + ], + ); + }); }