Merge branch 'regex-warnings' into 'main'
Remove useless escape characters from regexes See merge request soapbox-pub/soapbox!2721
This commit is contained in:
commit
84b114a16b
4 changed files with 10 additions and 9 deletions
|
@ -5,5 +5,5 @@ const urlPlaceholder = 'xxxxxxxxxxxxxxxxxxxxxxx';
|
||||||
export function countableText(inputText: string) {
|
export function countableText(inputText: string) {
|
||||||
return inputText
|
return inputText
|
||||||
.replace(urlRegex, urlPlaceholder)
|
.replace(urlRegex, urlPlaceholder)
|
||||||
.replace(/(^|[^\/\w])@(([a-z0-9_]+)@[a-z0-9\.\-]+[a-z0-9]+)/ig, '$1@$3');
|
.replace(/(^|[^/\w])@(([a-z0-9_]+)@[a-z0-9.-]+[a-z0-9]+)/ig, '$1@$3');
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ const stringSupplant = function(str: string, values: { [x: string]: any }) {
|
||||||
export const urlRegex = (function() {
|
export const urlRegex = (function() {
|
||||||
regexen.spaces_group = /\x09-\x0D\x20\x85\xA0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000/; // eslint-disable-line no-control-regex
|
regexen.spaces_group = /\x09-\x0D\x20\x85\xA0\u1680\u180E\u2000-\u200A\u2028\u2029\u202F\u205F\u3000/; // eslint-disable-line no-control-regex
|
||||||
regexen.invalid_chars_group = /\uFFFE\uFEFF\uFFFF\u202A-\u202E/;
|
regexen.invalid_chars_group = /\uFFFE\uFEFF\uFFFF\u202A-\u202E/;
|
||||||
regexen.punct = /\!'#%&'\(\)*\+,\\\-\.\/:;<=>\?@\[\]\^_{|}~\$/;
|
regexen.punct = /!'#%&'\(\)*\+,\\-\.\/:;<=>\?@\[\]\^_{|}~\$/;
|
||||||
regexen.validUrlPrecedingChars = regexSupplant(/(?:[^A-Za-z0-9@@$###{invalid_chars_group}]|^)/);
|
regexen.validUrlPrecedingChars = regexSupplant(/(?:[^A-Za-z0-9@@$###{invalid_chars_group}]|^)/);
|
||||||
regexen.invalidDomainChars = stringSupplant('#{punct}#{spaces_group}#{invalid_chars_group}', regexen);
|
regexen.invalidDomainChars = stringSupplant('#{punct}#{spaces_group}#{invalid_chars_group}', regexen);
|
||||||
regexen.validDomainChars = regexSupplant(/[^#{invalidDomainChars}]/);
|
regexen.validDomainChars = regexSupplant(/[^#{invalidDomainChars}]/);
|
||||||
|
@ -148,7 +148,7 @@ export const urlRegex = (function() {
|
||||||
regexen.validDomain = regexSupplant(/(?:#{validSubdomain}*#{validDomainName}(?:#{validGTLD}|#{validCCTLD}|#{validPunycode}))/);
|
regexen.validDomain = regexSupplant(/(?:#{validSubdomain}*#{validDomainName}(?:#{validGTLD}|#{validCCTLD}|#{validPunycode}))/);
|
||||||
regexen.validPortNumber = /[0-9]+/;
|
regexen.validPortNumber = /[0-9]+/;
|
||||||
regexen.pd = /\u002d\u058a\u05be\u1400\u1806\u2010-\u2015\u2e17\u2e1a\u2e3a\u2e40\u301c\u3030\u30a0\ufe31\ufe58\ufe63\uff0d/;
|
regexen.pd = /\u002d\u058a\u05be\u1400\u1806\u2010-\u2015\u2e17\u2e1a\u2e3a\u2e40\u301c\u3030\u30a0\ufe31\ufe58\ufe63\uff0d/;
|
||||||
regexen.validGeneralUrlPathChars = regexSupplant(/[^#{spaces_group}\(\)\?]/i);
|
regexen.validGeneralUrlPathChars = regexSupplant(/[^#{spaces_group}()?]/i);
|
||||||
// Allow URL paths to contain up to two nested levels of balanced parens
|
// Allow URL paths to contain up to two nested levels of balanced parens
|
||||||
// 1. Used in Wikipedia URLs like /Primer_(film)
|
// 1. Used in Wikipedia URLs like /Primer_(film)
|
||||||
// 2. Used in IIS sessions like /S(dfd346)/
|
// 2. Used in IIS sessions like /S(dfd346)/
|
||||||
|
@ -171,17 +171,18 @@ export const urlRegex = (function() {
|
||||||
'i');
|
'i');
|
||||||
// Valid end-of-path characters (so /foo. does not gobble the period).
|
// Valid end-of-path characters (so /foo. does not gobble the period).
|
||||||
// 1. Allow =&# for empty URL parameters and other URL-join artifacts
|
// 1. Allow =&# for empty URL parameters and other URL-join artifacts
|
||||||
regexen.validUrlPathEndingChars = regexSupplant(/[^#{spaces_group}\(\)\?!\*';:=\,\.\$%\[\]#{pd}~&\|@]|(?:#{validUrlBalancedParens})/i);
|
regexen.validUrlPathEndingChars = regexSupplant(/[^#{spaces_group}()?!*';:=,.$%[\]#{pd}~&|@]|(?:#{validUrlBalancedParens})/i);
|
||||||
// Allow @ in a url, but only in the middle. Catch things like http://example.com/@user/
|
// Allow @ in a url, but only in the middle. Catch things like http://example.com/@user/
|
||||||
regexen.validUrlPath = regexSupplant('(?:' +
|
regexen.validUrlPath = regexSupplant('(?:' +
|
||||||
'(?:' +
|
'(?:' +
|
||||||
'#{validGeneralUrlPathChars}*' +
|
'#{validGeneralUrlPathChars}*' +
|
||||||
'(?:#{validUrlBalancedParens}#{validGeneralUrlPathChars}*)*' +
|
'(?:#{validUrlBalancedParens}#{validGeneralUrlPathChars}*)*' +
|
||||||
'#{validUrlPathEndingChars}' +
|
'#{validUrlPathEndingChars}' +
|
||||||
|
// eslint-disable-next-line no-useless-escape
|
||||||
')|(?:@#{validGeneralUrlPathChars}+\/)' +
|
')|(?:@#{validGeneralUrlPathChars}+\/)' +
|
||||||
')', 'i');
|
')', 'i');
|
||||||
regexen.validUrlQueryChars = /[a-z0-9!?\*'@\(\);:&=\+\$\/%#\[\]\-_\.,~|]/i;
|
regexen.validUrlQueryChars = /[a-z0-9!?*'@();:&=+$/%#[\]\-_.,~|]/i;
|
||||||
regexen.validUrlQueryEndingChars = /[a-z0-9_&=#\/]/i;
|
regexen.validUrlQueryEndingChars = /[a-z0-9_&=#/]/i;
|
||||||
regexen.validUrl = regexSupplant(
|
regexen.validUrl = regexSupplant(
|
||||||
'(' + // $1 URL
|
'(' + // $1 URL
|
||||||
'(https?:\\/\\/)' + // $2 Protocol
|
'(https?:\\/\\/)' + // $2 Protocol
|
||||||
|
|
|
@ -102,7 +102,7 @@ const getAttachmentLimit = (software: string | null) => software === PLEROMA ? I
|
||||||
const normalizeVersion = (instance: ImmutableMap<string, any>) => {
|
const normalizeVersion = (instance: ImmutableMap<string, any>) => {
|
||||||
return instance.update('version', '0.0.0', version => {
|
return instance.update('version', '0.0.0', version => {
|
||||||
// Handle Mastodon release candidates
|
// Handle Mastodon release candidates
|
||||||
if (new RegExp(/[0-9\.]+rc[0-9]+/g).test(version)) {
|
if (new RegExp(/[0-9.]+rc[0-9]+/g).test(version)) {
|
||||||
return version.split('rc').join('-rc');
|
return version.split('rc').join('-rc');
|
||||||
} else {
|
} else {
|
||||||
return version;
|
return version;
|
||||||
|
|
|
@ -23,8 +23,8 @@ export function isRtl(text: string): boolean {
|
||||||
text = text.replace(/(mailto:)([^\s@]+@[^\s@]+\.[^\s@]+)/g, '');
|
text = text.replace(/(mailto:)([^\s@]+@[^\s@]+\.[^\s@]+)/g, '');
|
||||||
// Remove Phone numbe links
|
// Remove Phone numbe links
|
||||||
text = text.replace(/(tel:)([+\d\s()-]+)/g, '');
|
text = text.replace(/(tel:)([+\d\s()-]+)/g, '');
|
||||||
text = text.replace(/(?:^|[^\/\w])@([a-z0-9_]+(@[a-z0-9\.\-]+)?)/ig, '');
|
text = text.replace(/(?:^|[^/\w])@([a-z0-9_]+(@[a-z0-9.-]+)?)/ig, '');
|
||||||
text = text.replace(/(?:^|[^\/\w])#([\S]+)/ig, '');
|
text = text.replace(/(?:^|[^/\w])#([\S]+)/ig, '');
|
||||||
text = text.replace(/\s+/g, '');
|
text = text.replace(/\s+/g, '');
|
||||||
|
|
||||||
const matches = text.match(rtlChars);
|
const matches = text.match(rtlChars);
|
||||||
|
|
Loading…
Reference in a new issue