$.validator.addMethod('AZ09_', function (value) {
return /^[a-zA-Z0-9.-_]+$/.test(value);
}, 'Only letters, numbers, and _-. are allowed');
Run Code Online (Sandbox Code Playgroud)
当我使用某些东西test-123时仍然触发,就像连字符无效一样.我试着\-和--
我最近注意到,当涉及转义字符"\"(斜杠)时,String.replaceAll(正则表达式,替换)表现得非常奇怪.
例如,考虑有一个与文件路径字符串- String text = "E:\\dummypath"
我们要替换的"\\"用"/".
text.replace("\\","/")给出输出"E:/dummypath",然后text.replaceAll("\\","/")引发异常java.util.regex.PatternSyntaxException.
如果我们想要实现相同的功能,replaceAll()我们需要将其编写为,
text.replaceAll("\\\\","/")
一个值得注意的区别是replaceAll()它的参数是reg-ex而replace()有参数字符序列!
但text.replaceAll("\n","/")其作用与其char序列完全相同text.replace("\n","/")
深入挖掘: 当我们尝试其他一些输入时,可以观察到更奇怪的行为.
让我们分配 text="Hello\nWorld\n"
现在
text.replaceAll("\n","/"),text.replaceAll("\\n","/"),text.replaceAll("\\\n","/")这三个提供同样的输出Hello/World/
Java以我认为最好的方式搞砸了reg-ex!没有其他语言似乎在reg-ex中具有这些有趣的行为.任何特定的原因,为什么Java搞砸了这样?
我有以下javascript代码:
function checkLegalYear() {
var val = "02/2010";
if (val != '') {
var regEx = new RegExp("^(0[1-9]|1[0-2])/\d{4}$", "g");
if (regEx.test(val)) {
//do something
}
else {
//do something
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,对于我传递的任何值,我的regEx测试总是返回false(02/2010).我的代码中有什么问题吗?我已经在网上的各种javascript编辑器上尝试了这个代码,它运行正常.
我正在尝试验证角度2反应形式的输入,以便只有两位小数的数字才有效.
我正在使用该Validators.pattern('^\d+\.\d{2}$')方法来匹配正则表达式模式.根据https://regex101.com/r/1DbMZq/1我的正则表达式匹配正确,但当我在我的表单中使用它时,它总是无效的.
这是一个说明问题的plunker:https://plnkr.co/edit/TpBZtgNNww4CnTwQFtef?p = preview
我有什么想法我做错了吗?
我正在尝试将以下表达式转换为"new Regexp()"样式:
var Wyrazenie = /\btest[a-z]*/g;
Run Code Online (Sandbox Code Playgroud)
我真的很困惑,不知道如何解决它.以下是我所做的,但显然它不起作用.
var Wyraznie = new RegExp("\btest[a-z]*","g");
Run Code Online (Sandbox Code Playgroud)
还有一个问题,如果不是"测试"我会使用变量怎么样?
var badCode = "\(INST1,\\[0,";
var regex = new RegExp(badCode, "igm");
Run Code Online (Sandbox Code Playgroud)
得到"未终止的字符类"错误.
怎么修?
TIA
尝试从响应者那里得到的建议,请看下面的屏幕打印(您可能需要右键单击图像并在新选项卡中打开以使其清晰):记下new_bad_thing的值(上面等于badCode)

当我点击运行按钮时,这是屏幕打印(请注意错误信息):

我有一个字符串,并希望将其替换为mssqlFunctions对象中给出的其他字符串.
var mssqlFunctions = {
DateDiff: "DATEDIFF",
Abs: "ABS",
y: 'year',
m: 'minute'
};
Run Code Online (Sandbox Code Playgroud)
我的字符串是:DateDiff(m,Abs(23)[Emy()])
这是我替换String的代码
var regularExpression = new RegExp(Object.keys(mssqlFunctions).join("|"),"gi");
formula = formula.replace(regularExpression, function(matched){
return mssqlFunctions[matched];
});
Run Code Online (Sandbox Code Playgroud)
因此它将输出作为DATEDIFF(分钟,ABS(23)[Eminuteyear()])
但我不想替换[]中的字符串
所以我想要的输出是
DATEDIFF(分钟,ABS(23)[Emy()])
偶然发现的,不知道是什么原因。
// Results in "Syntax error in regular Expression".
var re = RegExp('\\');
Run Code Online (Sandbox Code Playgroud)
我知道构造函数需要一个字符串作为参数。并且在字符串中使用反斜杠来转义具有特殊含义的字符。我知道我必须将 \d 之类的字符转义为 \\d 。
因此:正确的反斜杠应该被解释为一些普通字符。
相反,它会抛出错误。为什么?
谁能向我解释一下吗?
在下面的代码中.我期待的是真的,但我却变得虚假了.我错过了什么?
var text = "Sentence $confirmationlink$ fooo";
alert(placeHolderExists(text,'confirmationlink'); // alerts false
function placeHolderExists(text,placeholdername) {
var pattern = new RegExp('\$'+placeholdername+'\$');
return pattern.test(text);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试用JavaScript替换'$$$'.就那么简单.
我有以下代码:
var splitSign = '$$$';
var string = 'hello$$$how$$$are$$$you';
var regex = new RegExp(splitSign,'g');
var res = string.replace(regex,' ');
console.info(res);
Run Code Online (Sandbox Code Playgroud)
结果是字符串没有被修改!任何想法为什么?
regex ×10
javascript ×8
validation ×2
angular ×1
charsequence ×1
escaping ×1
java ×1
jquery ×1
string ×1
testing ×1