【问题标题】:angular 4 - regular expression limit - show user to number of character left角度 4 - 正则表达式限制 - 向用户显示剩余字符数
【发布时间】:2017-11-14 15:41:59
【问题描述】:

我想向用户显示输入时剩下多少个字符的消息。正则表达式是从服务器发送的,这里有一些从服务器发送的正则表达式示例。

^[a-zA-Z0-9_\-. ()]{1,25}$
^(void|[0-9]{0,20})$

一旦用户开始输入,我想显示“剩余字符数 {{count}}”的消息,并且一旦达到限制(regx 的最大长度),它就不应该允许用户在输入中输入任何字符。我尝试使用此 regx 找出 regx (/\^[(.*)]{([0-9]+),([0-9]+)}\$/i) 中的限制并将其与字符串匹配,但此模式不适用于所有 regx..

我怎样才能做到这一点?

谢谢

【问题讨论】:

  • 为什么不检查字符串length
  • 显然你没有遵循基础。 [(.*)] 不清楚你试图给人留下什么印象。如果所有字符都属于计算长度,则根本不需要正则表达式,否则需要使用g修饰符匹配所有范围内的字符并计算长度。
  • 如果您只想计算非空白字符,请执行str.match(/\S/g).length
  • @revo 但我想从正则表达式中获取最大长度,然后只有我可以检查用户输入的计数
  • @joelkornbluh 编辑了问题

标签: javascript regex angular


【解决方案1】:

这是你的解决方案

  1. 从服务器获取正则表达式
  2. 找出您需要限制用户的最大长度
  3. 使用输入元素 .length 属性获取当前用户输入的长度,然后显示给用户
  4. 如果它小于最大长度,如果不是,则从输入字符串中删除最后 n 个字符,其中 n 是最大长度字符

您不需要将它与正则表达式匹配来限制字符串的长度,正如许多 cmets 中指出的那样。保持简单,以便您以后也能理解和维护它。

【讨论】:

  • 正如你在第二点中提到的,如何从服务器发送的正则表达式中获取最大长度。因为对于不同的输入,有不同的 regx,它包含不同的 maxlength
  • 我认为您所有的服务器正则表达式脚本都会在末尾写上长度限制,例如 {0,25}。您可以拾取最后一个左大括号和右大括号,并用字符串分割内部以获得长度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-23
  • 1970-01-01
  • 2021-06-15
相关资源
最近更新 更多