【问题标题】:javascript regExp check last characterjavascript regExp 检查最后一个字符
【发布时间】:2013-08-11 12:36:56
【问题描述】:

我正在使用这个 RexExp 代码 var userIdPattern = new RegExp('^([A-z0-9_.]{4,15})$');,我想检查最后一个字符是否是点 (.) 然后 .test() 返回我 false

var userIdPattern = new RegExp('^([A-z0-9_.]{4,15})$');
console.log(userIdPattern.test('Omid.my.')); // -> I need this to be false

在这种情况下,返回我true

userIdPattern.test('Omid.my'); //-> true

【问题讨论】:

  • /\.$/ 应该这样做.. 返回 true 但稍后您可以使用感叹号将其设为 false。
  • 您确定要使用 A-z 吗?其中包括:[ ] \ ^ ` _.
  • @7stud 是的,用户名必须包含“[A-z], [0-9], _, ."但点和下划线不能是第一个字符和最后一个字符。
  • 所以一个有效的用户名是“Joe^]`Smith?我很清楚你不知道 A-z 范围内包含哪些字符,因为你随后通过编写'重复了这些字符之一_' 在你的角色类中。

标签: javascript regex string


【解决方案1】:

更新后,更合适的正则表达式可能是:

var userIdPattern = new RegExp('^([A-Za-z0-9\[\]\\^`][A-z0-9_.]{2,13}[A-Za-z0-9\[\]\\^`])$');

也就是说,如果您想在用户名中包含其他特殊字符,例如他的评论中提到的 7stud,并且只从第一个和最后一个字符中排除 ._

否则,为了防止这些字符,我建议:

var userIdPattern = new RegExp('^([A-Za-z0-9][A-Za-z0-9_.]{2,13}[A-Za-z0-9])$');

Fiddle 进行测试。

【讨论】:

  • @OMiD 好的,现在可以了。与其他一些正则表达式引擎不同,似乎 JS 将字符类放在方括号中时将它们分开。尝试查看编辑后的正则表达式是否有效:)
  • @OMiD 你在用户名中允许[]\^`吗?
  • @OMiD 使用第二个正则表达式。我现在添加了一个指向小提琴的链接,它似乎对我有用。
  • @OMiD 哦,你也需要下划线吗?糟糕,错过了那个 xD
  • @OMiD 是的,没关系 :)
【解决方案2】:

你可以这样做

^([A-z0-9_.]{3,14}[A-z0-9])$

阅读您的评论后编辑

^[a-z0-9][a-z0-9_.]{2,13}[a-z0-9]$

Preview

另外我建议你使用标记i 来忽略大小写:

var userIdPattern = new RegExp('^[a-z0-9][a-z0-9_.]{3,13}[a-z0-9]$', 'i');

【讨论】:

  • 谢谢,还有一点:用户名必须包含“[A-z], [0-9], _, ."但点和下划线不能是第一个或最后一个字符。
  • @OMiD“必须包含”还是“可以包含”?
  • 这是我的第一个正则表达式中的一个错误。用户名只能包含 ` [a-z], [A-Z], [0-9], _ , . ` 但点和下划线不能作为第一个或最后一个字符。
猜你喜欢
  • 2023-03-16
  • 2017-10-30
  • 1970-01-01
  • 2020-08-07
  • 2013-11-26
  • 1970-01-01
  • 2020-01-27
  • 1970-01-01
  • 2021-08-01
相关资源
最近更新 更多