字符串中的空格是允许的,但不是在第一个或最后一个位置
Space in string allowed, but not at first or last position
对于表单验证,我必须用javascript检查输入的有效名称字符串必须符合以下模式。
- 我不能以空格开始或结束
- 可以包含空格
- 可以包含大写或小写字母,包括ê è等
- 可能有像- ' " 这样的符号
- 必须包含至少1个字符
这个RegExp几乎完成了这个工作:
[a-zA-ZàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð ,.'-]
但是这个RegExp不检查开始和结束处的空格。
哪个JS RegExp需要上面提到的要求?
Thanks in advance
以下是我对这个话题的看法:
if (subject.match(/^(?='S+)(?=[a-zA-ZàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð ,.'-]*$).*(?='S).$/)) {
// Successful match
}
它的意思是,至少从非空格开始。这里是条件1和条件5
然后确保整个内容仅由允许的字符组成。这是你所有的其他条件。
然后确保至少有一个非空格字符,匹配它,然后匹配结尾。
更多细节:
"
^ # Assert position at the beginning of the string
(?= # Assert that the regex below can be matched, starting at this position (positive lookahead)
'S # Match a single character that is a “non-whitespace character”
+ # Between one and unlimited times, as many times as possible, giving back as needed (greedy)
)
(?= # Assert that the regex below can be matched, starting at this position (positive lookahead)
[a-zA-ZàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð ,.'-] # Match a single character present in the list below
# A character in the range between “a” and “z”
# A character in the range between “A” and “Z”
# One of the characters “àáâäãåèéêëìíîïòóôöõøùúûüÿýñçcšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆCŠŽ?ð ,.”
# The character “'”
# The character “-”
* # Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
$ # Assert position at the end of the string (or before the line break at the end of the string, if any)
)
. # Match any single character that is not a line break character
* # Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
(?= # Assert that the regex below can be matched, starting at this position (positive lookahead)
'S # Match a single character that is a “non-whitespace character”
)
. # Match any single character that is not a line break character
$ # Assert position at the end of the string (or before the line break at the end of the string, if any)
"
您需要使用RegExp ^和$代码,它们分别指定开始和结束。
请参阅有关此操作的更多文档
希望这对你有帮助!
试试这个
^(?! )[a-zA-ZàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð ,.'-]*[a-zA-ZàáâäãåèéêëìíîïòóôöõøùúûüÿýñçčšžÀÁÂÄÃÅÈÉÊËÌÍÎÏÒÓÔÖÕØÙÚÛÜŸÝÑßÇŒÆČŠŽ∂ð,.'-]$
在Regexr上查看
^
将模式锚定到字符串
$
将模式锚定到字符串
(?! )
是一个负向前看,它确保它不以空格
然后是您的字符类与*
量词,意味着0或更多次。最后还是你的类,但是没有空格,这是为了确保它不会以空格结束。
很遗憾Javascript正则表达式不支持Unicode,并且不允许所有类型的字母使用'p{L}
。
相关文章:
- 无法获取vis.js最后一个或第一个选定的网络节点
- 使用javascript替换字符串中除第一个和最后一个之外的所有字符
- 浮动图-如何在x轴上显示第一个月和最后一个月的minTickSize:[2,“month&”]
- 第一个元素和最后一个元素之间的连续循环
- 引导程序转盘隐藏第一个和最后一个控件
- 使用jquery以dd-mmm-yyyy格式获取给定日期后的第一个日期和最后一个日期
- 删除第一个和最后一个<br/>来自字符串
- 如何删除字符串的第一个和最后一个字符
- jQuery删除除第一个和最后一个数字之外的所有数字
- Jquery幻灯片中的列表,连接第一个和最后一个列表元素以创建旋转木马
- 谷歌地图没有显示地图上的所有目的地标记,只有第一个和最后一个
- 谷歌图表,有问题地获取第一个和最后一个点的趋势线值
- jQuery slice() 方法 在 html 中选择元素(第一个/最后一个)
- 数据表:禁用第一个下一个上一个最后一个,并在处理时显示/搜索记录
- Javascript 中的第一个下一个/上一个子字符串位置
- JavaScript 替换第一个/最后一个字母并将中间文本括在标签中
- 关于使用类名定位第一个上一个最近元素的问题
- 猫头鹰旋转木马,到达第一个/最后一个项目后导航被禁用
- (HTML / JS)添加“,“在第二个最后一个字串和隐藏"&"如果字符串中有一个单词
- 使用Jquery获取匹配条件的第一个前一个元素