猿问

如何使用正则表达式在文本中允许撇号

我正在使用这个正则表达式来验证文本:


    const regex = /^[\u00C0-\u017Fa-zA-Z'][\u00C0-\u017Fa-zA-Z-' ]+[\u00C0-\u017Fa-zA-Z']?$/


return text.length > 0 && !reg.test(text);

它允许包含来自不同语言的特殊字符的文本字符。

但是我有问题在此验证中允许撇号“'”。

有人可以帮助我吗?


ITMISS
浏览 133回答 2
2回答

慕容708150

由于您的输入可能包含单引号,您需要将它们添加到所有可能需要匹配它们的字符类中:const reg = /^[\u00C0-\u017Fa-zA-Z'’‘’][\u00C0-\u017Fa-zA-Z’‘’' -]+[\u00C0-\u017Fa-zA-Z'’‘’]?$/注意我还放置-在第二个字符类的末尾,以便它始终可以被解析为文字连字符。如果您的输入字符串可以有任何不在开始/结束处的连字符,并且字符串长度可以是 1 个字符,请使用const reg = /^[\u00C0-\u017Fa-zA-Z'’‘’](?:[\u00C0-\u017Fa-zA-Z’‘’' -]*[\u00C0-\u017Fa-zA-Z'’‘’])?$/也就是说,您有一个^a[a-]+a?$类似方案的正则表达式,但我建议^a(?:[a-]*a)?$,即匹配a0 或更多as 和-s的可选序列,后跟a直到字符串末尾。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答