正则表达式不允许字符串以特殊字符开头或结尾,并且不应有连续的特殊字符

标签 regex string validation

我想在我的应用程序中设置密码。密码不应以特殊字符开头和结尾,字符串之间可以添加特殊字符。它可能有特殊字符,但不应有连续的特殊字符。这里我有一个正则表达式,它不允许用户不输入带有特殊字符的字符串的起始字符和结束字符。

var string='877sswere';
var a= RegExp(/^[a-zA-Z0-9](.*[a-zA-Z0-9])?$/).test(string);
console.log(a);

所以我的要求是
string='877sswere' -> Correct
string='@877sswere' -> In Correct
string='!877sswere^' -> In Correct
string='877sswere$' -> In Correct
string='8&*77sswere' -> In Correct
string='87#7ssw$er^e' -> Correct
string='877^sswere' -> Correct

那么有人可以建议我如何做到这一点吗?任何帮助是极大的赞赏。提前致谢。

最佳答案

这个正则表达式应该可以工作:

/^[a-z0-9](?!.*?[^\na-z0-9]{2}).*?[a-z0-9]$/gmi

RegEx Demo

关于正则表达式不允许字符串以特殊字符开头或结尾,并且不应有连续的特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25063248/

相关文章:

regex - 否定正则表达式以使用 MVC 验证属性

regex - 选择两个模式之间的第一个匹配项。如果使用 sed/awk/grep 找到第三个模式,则重新开始搜索

javascript - 在同一行中多次匹配字符串模式

java - 检查 JTextField 是否仅包含特定允许的字符

c# - 检查字符串列表中是否存在字符串数组

c++ - Linux C++ 将字符串写入COM端口,读回响应?

javascript - linter 和验证器有什么区别?

sql - Oracle PL/SQL : how the SYSDATE is different from 'DD-MMM-YY' ?

javascript - Node.js 中通过正则表达式分割数组

validation - 如何在语义 UI 中进行自定义验证?