首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有不同结果的xregexp

具有不同结果的xregexp
EN

Stack Overflow用户
提问于 2019-03-15 07:46:41
回答 2查看 95关注 0票数 3

我想用规则验证字符串:

  • 字符串必须至少包含一个字母。
  • 字符串只能包含那些符号(但不是必须的):‘,-,(,)
  • 如果字符串中有一个符号,它还必须包含一个字母(至少一个第一个字符)。
  • 只有符号才不允许

到目前为止,我提出了以下正则表达式:

代码语言:javascript
复制
    static personName = XRegExp.cache("^[\\s\\p{L}\\'\\-\\(\\)]+(?=\\S*\\p{L})\\S+$");

不能正常工作。只有"^(?=\\S*\\p{L})\\S+$"这有助于字母,我很难理解如何添加符号到它,以便所有的规则将通过,我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-15 08:19:13

如果允许的字符仅限于枚举的字符,则可以使用

代码语言:javascript
复制
var regex = XRegExp("^[\\s'()-]*\\p{L}[\\s\\p{L}'()-]*$"); 

如果您希望允许任何字符,但只允许符号的子集,则使用“至少一个字母”限制。

代码语言:javascript
复制
var regex = XRegExp("^[\\p{N}\\s'()-]*\\p{L}[\\p{L}\\p{N}\\s'()-]*$"); 

请参阅JS演示:

代码语言:javascript
复制
var regex = XRegExp("^[\\s'()-]*\\p{L}[\\s\\p{L}'()-]*$");
console.log( regex.test("Sóme (unknown-string) doesn't like it") );

var regex = XRegExp("^[\\p{N}\\s'()-]*\\p{L}[\\p{L}\\p{N}\\s'()-]*$"); 
console.log( regex.test("Sóme unknown-string (123)") );
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/3.2.0/xregexp-all.min.js"></script>

详细信息

  • ^ -字符串的开始
  • [\\s'()-]* -0或更多白空间、'()- chars
  • [\\p{N}\\s'()-]* -0或更多位数、空格和允许的符号
  • \\p{L}一封信
  • [\\s\\p{L}'()-]* -0或更多空格、字母、'()-字符
  • [\\p{L}\\p{N}\\s'()-]* -0或更多字母、数字、空白和允许的符号
  • $ -字符串的末端。
票数 1
EN

Stack Overflow用户

发布于 2019-03-15 07:58:34

试试这个正则表达式

代码语言:javascript
复制
 ^[a-zA-Z0-9\'\-\(\)]*[a-zA-Z][a-zA-Z0-9\'\-\(\)]*$

游行示威

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55177849

复制
相关文章

相似问题

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