首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >特殊数值的正则表达式

特殊数值的正则表达式
EN

Stack Overflow用户
提问于 2013-06-20 05:41:03
回答 2查看 131关注 0票数 0

我想检查几个必须满足以下条件的文本框:我的意思是字母表来自a-z(大写和小写)数字0-9,特殊字符是~`!@#$%^&*()-_+={}[];:'",<>/?

  1. 它只能包含字母
  2. 它不能只包含数字。
  3. 它不能只包含特殊字符。
  4. 它不能只包含数字和特殊字符。
  5. 它可以包含字母、数字和特殊字符。
  6. 它可以包含字母和数字。
  7. 它可以包含字母和特殊字符。

我找到了一个解决方案,但似乎对我没有用:

代码语言:javascript
复制
/^[a-z0-9/. -!@#$%^&*(){}:;"',/?]+$/i

我正在检查它,因为:

代码语言:javascript
复制
var alpha=/^[a-z0-9/. -!@#$%^&*(){}:;"',/?]+$/i;
if (!alpha.test(username.value))
{
    alert('Invalid username');
    document.theForm.username.focus();
    return false;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-20 05:50:13

你能给出一些输入的例子吗?你能试试这个吗?

代码语言:javascript
复制
/.*?[a-zA-Z]+.*/

或者如果需要指定特殊字符的列表:

代码语言:javascript
复制
/[list of chars]*?[a-zA-Z]+[list of chars]*/
票数 0
EN

Stack Overflow用户

发布于 2013-06-20 05:57:03

问题可以重表示为匹配只包含字符的字符串。

代码语言:javascript
复制
A-Za-z0-9~`!@#$%^&*()-_+={}[];:'",.<>/?

至少其中一封是一封信。

幸运的是,您已经涵盖了范围U+0021到U+007F中的所有可打印字符,因此所需的regex只是简单地

代码语言:javascript
复制
[!-~]*[A-Za-z][!-~]*

编辑:在仔细阅读时,我注意到您不允许反斜杠!如果您想允许反斜杠,上面的正则表达式是可以的;如果不允许,您应该这样修改它:

代码语言:javascript
复制
[!-\[\]-~]*[A-Za-z][!-\[\]-~]*

这有点丑,因为为了排除反斜杠,我们不得不说

  • 范围![中的所有字符-- ]~范围中的联合字符--以及对[]的明确提及都需要用(您猜到的) \来转义。

希望您能够允许使用\,这样您就可以使用上面更简单的正则表达式了。

编辑2

为了提高正则表达式的效率,您应该使用一个不情愿的量词(就像kcsoft那样):

代码语言:javascript
复制
[!-~]*?[A-Za-z][!-~]*

对于JavaScript,但对于matches,如果使用matches,则应该锚定正则表达式以匹配整个字符串,并在JavaScript中给出如下内容:

代码语言:javascript
复制
/^[!-~]*?[A-Za-z][!-~]*$/

而且,正如您在问题中所做的那样,您可以通过使用i修饰符来缩短它:

代码语言:javascript
复制
/^[!-~]*?[A-Z][!-~]*$/i
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17206092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档