<div dir="ltr">1. is this minifier-friendly?<div>2. is parsing-impact minimal enough to not affect load-times?  regexp-detection/bounding is among the most expensive/complex part of javascript-parsing.<div><br></div><div>those 2 nits aside, i'm on the fence.  regexp-spaghetti is a valid painpoint, and jslint's author has expressed desire for multiline regexp [1].  otoh, there is a good-enough solution by falling-back to constructor-form to improve readability:</div><div><br></div><div>```js<br><font face="courier new, monospace">// real-world spaghetti-regexp code in jslint.js<br>const rx_token = /^((\s+)|([a-zA-Z_$][a-zA-Z0-9_$]*)|[(){}\[\],:;'"~`]|\?\.?|=(?:==?|>)?|\.+|[*\/][*\/=]?|\+[=+]?|-[=\-]?|[\^%]=?|&[&=]?|\|[|=]?|>{1,3}=?|<<?=?|!(?:!|==?)?|(0|[1-9][0-9]*))(.*)$/;<br><br>// vs<br><br><font color="#ff0000">/*<br> * break JSON.stringify(rx_token.source)<br> * into multiline constructor-form for readability<br> */</font><br>const rx_token = new RegExp(<br>    "^("<br>    + "(\\s+)"<br>    + "|([a-zA-Z_$][a-zA-Z0-9_$]*)"<br>    + "|[(){}\\[\\],:;'\"~`]"<br>    + "|\\?\\.?"<br>    + "|=(?:==?|>)?"<br>    + "|\\.+"<br>    + "|[*\\/][*\\/=]?"<br>    + "|\\+[=+]?"<br>    + "|-[=\\-]?"<br>    + "|[\\^%]=?"<br>    + "|&[&=]?"<br>    + "|\\|[|=]?"<br>    + "|>{1,3}=?"<br>    + "|<<?=?"<br>    + "|!(?:!|==?)?"<br>    + "|(0|[1-9][0-9]*)"<br>    + ")(.*)$"<br>);</font><br>```<br></div></div><div><br></div><div>[1] github jslint-issue #231 - ignore long regexp's (and comments)</div><div><a href="https://github.com/douglascrockford/JSLint/pull/231#issuecomment-421881426">https://github.com/douglascrockford/JSLint/pull/231#issuecomment-421881426</a>  <br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 3, 2019 at 10:27 PM Jacob Pratt <<a href="mailto:jhprattdev@gmail.com">jhprattdev@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">Even if this flag were restricted to constructors instead of both constructors and literals, it could be worthwhile.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Jun 3, 2019, 23:19 Isiah Meadows <<a href="mailto:isiahmeadows@gmail.com" target="_blank">isiahmeadows@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Let me clarify that previous message: I mean "newline restriction" in<br>
the sense that newlines are not permitted in regexp literals. A `/x`<br>
flag would make removing it practically required for it to have any<br>
utility.<br>
<br>
-----<br>
<br>
Isiah Meadows<br>
<a href="mailto:contact@isiahmeadows.com" rel="noreferrer" target="_blank">contact@isiahmeadows.com</a><br>
<a href="http://www.isiahmeadows.com" rel="noreferrer noreferrer" target="_blank">www.isiahmeadows.com</a><br>
<br>
On Mon, Jun 3, 2019 at 11:14 PM Isiah Meadows <<a href="mailto:isiahmeadows@gmail.com" rel="noreferrer" target="_blank">isiahmeadows@gmail.com</a>> wrote:<br>
><br>
> I would personally love this (as well as interpolations in regexp<br>
> literals). I do have a concern about whether removing the newline<br>
> restriction creates ambiguities with division, but I suspect this is<br>
> *not* the case.<br>
><br>
> -----<br>
><br>
> Isiah Meadows<br>
> <a href="mailto:contact@isiahmeadows.com" rel="noreferrer" target="_blank">contact@isiahmeadows.com</a><br>
> <a href="http://www.isiahmeadows.com" rel="noreferrer noreferrer" target="_blank">www.isiahmeadows.com</a><br>
><br>
> On Mon, Jun 3, 2019 at 10:03 PM Jacob Pratt <<a href="mailto:jhprattdev@gmail.com" rel="noreferrer" target="_blank">jhprattdev@gmail.com</a>> wrote:<br>
> ><br>
> > Has there been any previous discussion of adding the `x` flag to JS? It exists in other languages, and can make relatively complicated regex _much_ easier to read. It also allows for comments, which are incredibly helpful when trying to understand some regexes.<br>
> ><br>
> > For prior art, XRegExp has this flag (though I've no idea to figure out how frequently it's used), as do a few other languages.<br>
> ><br>
> > Quick overview: <a href="https://www.regular-expressions.info/freespacing.html" rel="noreferrer noreferrer" target="_blank">https://www.regular-expressions.info/freespacing.html</a><br>
> ><br>
> > Language references:<br>
> > Python: <a href="https://docs.python.org/3/library/re.html#re.X" rel="noreferrer noreferrer" target="_blank">https://docs.python.org/3/library/re.html#re.X</a><br>
> > Rust: <a href="https://docs.rs/regex/1.1.6/regex/" rel="noreferrer noreferrer" target="_blank">https://docs.rs/regex/1.1.6/regex/</a><br>
> > XRegExp: <a href="http://xregexp.com/xregexp/flags/#extended" rel="noreferrer noreferrer" target="_blank">http://xregexp.com/xregexp/flags/#extended</a><br>
> > .NET: <a href="https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference#regular-expression-options" rel="noreferrer noreferrer" target="_blank">https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference#regular-expression-options</a><br>
> ><br>
> > Jacob Pratt<br>
> > _______________________________________________<br>
> > es-discuss mailing list<br>
> > <a href="mailto:es-discuss@mozilla.org" rel="noreferrer" target="_blank">es-discuss@mozilla.org</a><br>
> > <a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div>
_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" rel="noreferrer" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
</blockquote></div>