繁体   English   中英

RegEx 模式不允许除下划线外的特殊字符

[英]RegEx pattern to not allow special character except underscore

我有一个特殊要求,我需要实现以下目标

  1. 除了字符串之间的_外,不允许使用特殊字符。
  2. 字符串不应以_ , 开头或结尾. 和数值。
  3. 在任何数值之前或之后不应允许使用下划线。

我能够实现大部分功能,但我的 RegEx 模式也允许其他特殊字符。

我如何修改下面的 RegEx 模式以不允许除下划线之外的任何特殊字符到字符串之间。

^[^0-9._]*[a-zA-Z0-9_]*[^0-9._]$

您的开头和结尾部分; [^0-9._] ,说匹配除这些之外的任何字符。

所以你需要把它改成你能匹配的。

/^[A-Z][A-Z0-9_]*[A-Z]$/i

既然你现在说一个字符是有效的:

/^[A-Z]([A-Z0-9_]*[A-Z])?$/i

您可以做的是使用否定前瞻来断言您的要求:

^(?![0-9._])(?!.*[0-9._]$)(?!.*\\d_)(?!.*_\\d)[a-zA-Z0-9_]+$

解释

  • ^断言字符串的开始
  • (?![0-9._])否定前瞻断言字符串不以[0-9._]开头
  • (?!.*[0-9._]$)否定前瞻断言字符串不以[0-9._]结尾
  • (?!.*\\d_)否定前瞻断言字符串不包含后跟下划线的数字
  • (?!.*_\\d)否定前瞻断言字符串不包含下划线后跟数字
  • [a-zA-Z0-9_]+匹配字符类中指定的内容一次或多次。 您可以将允许匹配的字符添加到字符类中,例如还可以添加.
  • $断言字符串的结尾

正则表达式演示

把事情简单化。 只允许下划线和字母数字正则表达式:

/^[a-zA-Z0-9_]+$/

Javascript es6 实现(适用于 React):

const re = /^[a-zA-Z0-9_]+$/;
re.test(variable_to_test);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM