我一直在嘗試創建一個正則運算式模式來驗證支持字母、重音符號并包括這兩個特殊字符的名稱- .
這是模式,它按預期作業,但只有在我輸入第三個字符之后!
因此,它不適用于 2 個字符并回傳false。
/^[a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\.\-]([a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\s\.\-] )([a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\s\.\-]$)/.test('RE')
它適用于 >=3 個字符并回傳true。
/^[a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\.\-]([a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\s\.\-] )([a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\s\.\-]$)/.test('REG')
對小于 3 的字符不起作用的模式可能出了什么問題?
這里有人承認這一點嗎?
uj5u.com熱心網友回復:
該模式明確需要三個或更多字符:
一個匹配
[a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\.\-]一個或多個匹配
([a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\s\.\-] )一個匹配
([a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\s\.\-])
您還沒有說明您希望模式做什么以及為什么要分別捕獲中間和最后位,但是如果您想分別捕獲“中間”和結尾,請將 量詞更改為*;兩個字符的字串將捕獲第一個捕獲組的空字串:
/^[a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\.\-]([a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\s\.\-]*)([a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\s\.\-])$/
// ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????^
顯示代碼片段
const rex = /^[a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\.\-]([a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\s\.\-]*)([a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\s\.\-])$/;
function test(str) {
const match = rex.exec(str);
console.log(`String: ${str}`)
console.log(`Result: ${match ? "match" : "no match"}`);
if (match ) {
console.log(`Group 1: ${match[1]}`);
console.log(`Group 2: ${match[2]}`);
}
}
test("RE");
test("REG");
.as-console-wrapper {
max-height: 100% !important;
}
或者您可能打算在第一個字符之后捕獲所有內容(因為第二個和第三個類是相同的):
/^[a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\.\-]([a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\s\.\-] )$/
顯示代碼片段
const rex = /^[a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\.\-]([a-zA-Z??üü??????ááàà?aééèèêê??ííìì??????óóòò??úúùù??Yy??\s\.\-] )$/;
function test(str) {
const match = rex.exec(str);
console.log(`String: ${str}`)
console.log(`Result: ${match ? "match" : "no match"}`);
if (match ) {
console.log(`Group 1: ${match[1]}`);
}
}
test("RE");
test("REG");
.as-console-wrapper {
max-height: 100% !important;
}
uj5u.com熱心網友回復:
但是您的模式匹配 3 個字符分鐘?如果你重寫它:
/^[<char>(<char> )<char>$/
最少三個字符
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/528908.html
