Javascript 正则表达式-val.replace(/^[^a-zA-Z0-9]*|[^a-zA-Z0-9]*$/g,”);

Javascript 正则表达式-val.replace(/^[^a-zA-Z0-9]*|[^a-zA-Z0-9]*$/g,”);,javascript,jquery,regex,web,Javascript,Jquery,Regex,Web,我在学习正则表达式,现在我觉得很困惑 val.replace(/^[^a-zA-Z0-9]*|[^a-zA-Z0-9]*$/g, ''); 在上面的表达式中 1哪个部分表示不包含空格?因为我试图排除所有非字母数字字符 2由于我甚至不想使用“$”和下划线,我可以在下面的表达式中指定“$”和下划线吗 val.replace(/^[^a-zA-Z0-9$_]*|[^a-zA-Z0-9$_]*/g, '');? 3如“x | y”所述-找到任何指定的备选方案。那么为什么我们使用类似于[^a-zA-Z

我在学习正则表达式,现在我觉得很困惑

val.replace(/^[^a-zA-Z0-9]*|[^a-zA-Z0-9]*$/g, '');
在上面的表达式中

1哪个部分表示不包含空格?因为我试图排除所有非字母数字字符

2由于我甚至不想使用“$”和下划线,我可以在下面的表达式中指定“$”和下划线吗

val.replace(/^[^a-zA-Z0-9$_]*|[^a-zA-Z0-9$_]*/g, '');?
3如“x | y”所述-找到任何指定的备选方案。那么为什么我们使用类似于[^a-zA-Z0-9]|[^a-zA-Z0-9]的东西,它在两侧都是相同的


请帮助我理解这一点,我觉得这有点困惑和困难。

要回答你的第三个问题,备选方案一直延伸到//s,因此两边都不相同。在原始正则表达式中,左边的备选方案在字符串的开头都是非字母数字,右边的备选方案在字符串的结尾都是非字母数字字符串。

为了回答您的第三个问题,可选项一直运行到//s,因此两边都不相同。在原始正则表达式中,左可选项在字符串的开头都是非字母数字,右可选项在字符串的结尾都是非字母数字。

此正则表达式替换了所有的起始项g和字符串中的尾随非字母数字字符

它没有特别指定空格。它只是否定字母数字字符以外的所有字符。方括号内的任何字符都是字符集-[任何字符]。字符集内的起始大写字母表示为否定。因此[^a-zA-Z0-9]*表示除a-z、a-z或0-9之外的零个或多个字符

结尾处的$符号表示字符串的结尾,与$和uu符号无关。这将包含在字符集中,因为它都是非字母数字字符

参考@smathy的答案


同样仅供参考,AFAIU正则表达式不能通过滚动教程来学习。您只需浏览基础知识并尝试示例。

此正则表达式将替换字符串中所有开头和结尾的非字母数字字符

它没有特别指定空格。它只是否定字母数字字符以外的所有字符。方括号内的任何字符都是字符集-[任何字符]。字符集内的起始大写字母表示为否定。因此[^a-zA-Z0-9]*表示除a-z、a-z或0-9之外的零个或多个字符

结尾处的$符号表示字符串的结尾,与$和uu符号无关。这将包含在字符集中,因为它都是非字母数字字符

参考@smathy的答案

另外,仅供参考,AFAIU正则表达式不能通过滚动教程来学习。您只需浏览基础知识并尝试示例。

一些基本信息

当你读正则表达式时,你是从左到右读的,这就是引擎的工作原理

这在交替的情况下很重要,因为总是先尝试左侧的一个

但在$EOL或EOS锚定的情况下,从右向左读取可能更容易

内置断言,如换行锚^$和word boundry\b以及常规断言向前看?=?!向后看? 它们就像是通过或失败的单路径内联条件,只有通过了才会检查它右边的表达式。因此它们确实匹配某些东西,它们匹配一个条件

格式化你的正则表达式,以便你能看到它在做什么。使用应用程序来帮助你

全局上下文中的正则表达式将始终匹配两次,一次在字符串的开头,一次在字符串的结尾,因为换行锚点,并且实际上不需要任何其他内容来匹配

因此,基本上,您应该避免尝试将所有可选内容与内置锚点^$\b相匹配。这意味着您的正则表达式最好用^[^a-zA-Z0-9]+|[^a-zA-Z0-9]+$表示,因为您不在乎在*、零或更多量词的情况下它是否不存在

祝你好运,继续学习。

一些基本信息

当你读正则表达式时,你是从左到右读的,这就是引擎的工作原理

这在交替的情况下很重要,因为总是先尝试左侧的一个

但在$EOL或EOS锚定的情况下,从右向左读取可能更容易

内置断言,如换行锚^$和word boundry\b以及常规断言向前看?=?!向后看? 它们就像是通过或失败的单路径内联条件,只有通过了才会检查它右边的表达式。因此它们确实匹配某些东西,它们匹配一个条件

格式化你的正则表达式,以便你能看到它在做什么。使用应用程序来帮助你

全局上下文中的正则表达式始终匹配两次,一次在开头 因为断线锚点,而且实际上不需要任何其他东西来匹配,所以在字符串的末尾有一次

因此,基本上您应该避免尝试将所有可选内容与内置锚^$\b相匹配。这意味着您的正则表达式最好用^[^a-zA-Z0-9]+|[^a-zA-Z0-9]+$来表示,因为在*、零或更多量词的情况下,您不在乎它是否不在那里


祝你好运,继续学习。

阅读一般信息。我在学习正则表达式基础知识时发现了这个代码表达式。i、 e替换所有非字母数字字符。阅读了解一般信息。我在学习正则表达式基础知识时发现了此代码表达式。i、 e替换所有非字母数字字符。谢谢,现在我有了一个想法:谢谢你,现在我有了一个想法详细的解释帮助了我。泰:详细的解释帮助了我。泰:我不知道,我不知道为什么我们在两种选择中使用相同的方法。现在这是有道理的。我不知道为什么我们在两种选择中使用相同的方法。现在这是有道理的。关于帮助别人
   ^                # BOS
   [^a-zA-Z0-9]*    # Optional not any alphanum chars
|                 # or, 
   [^a-zA-Z0-9]*    # Optional not any alphanum chars
   $                # EOS